解题思路:将先第一数组储存起来 输入第二数组时 每输入一位输入 去与第一数组元素遍历找到 当前最优数组距离(优化:因为数组元素为单调递增所以距离的结果也为单调 如果当前处理与第一数组的元素大于前面处理过的则单调性破坏break跳出不用处理后面 后面的距离必然越来越大)
注意事项:
参考代码:
#include <stdio.h> #include <stdlib.h> long int abss(long int s)//绝对值 { if(s<0)return -s; else return s; } int main() { long int m,n,i,j,s,jl,ans,flag=0; long int f[1001]; scanf("%ld%ld",&m,&n); for(i=0;i<m;i++) scanf("%ld",&f[i]); for(i=0;i<n;i++) { scanf("%ld",&s); if(!flag) { for(j=0;j<m;j++) if(abss(s-f[j])<ans||j==0)ans=abss(s-f[j]);//求距离所以用绝对值 else break; //优化(单调性被破坏,上一个点位 极值点) if(ans<jl||i==0)jl=ans; if(jl==0||s>f[m-1])flag=1; //如果第二个数组的第一个(或任意)元素 //大于第一个数组的最后一个元素 } //那么距离就是只能jl=s-f[m-1] flag标记 后面不用处理 } printf("%ld\n",jl); return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:730 |
C二级辅导-分段函数 (C语言代码)浏览:566 |
A+B for Input-Output Practice (VI) (C++代码)浏览:418 |
用筛法求之N内的素数。 (C语言代码)浏览:1261 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:485 |
【排队买票】 (C语言代码)浏览:900 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:550 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:550 |
找出最长的字符串来 (C语言代码)浏览:1771 |
1202题解浏览:631 |