查找
来源:互联网 发布:淘宝seo技巧 编辑:程序博客网 时间:2024/05/01 01:15
三个查找题目,做的还是比较顺利,一次性被服务器AC!
http://ac.jobdu.com/problem.php?pid=1126
/** * 1、定义的极值的下标包括0,与最后 * 2、每组下标之间空格分开 * 3、多组测试之间无空行 * 4、数全相同怎么办呢? * 5、提交后AC了,说明了测试数据中必定都有极值。把4的情况排除了。 * 题目没有给出没有极值的情况的反应,也暗示了是可处理的数据。 **/ #include <stdio.h> int main(){ #ifdef ONLINE_JUDGE #else freopen("E:\\in.txt", "r", stdin); #endif int n; while (scanf("%d", &n) != EOF){ while(n-- > 0){ int k; scanf("%d", &k); int buf[100]; for (int i=0; i<k; i++){ scanf("%d", &buf[i]); }// k 个数据 bool firstIndex = true; for (int i = 0; i <k; i++){ if (i > 0 && i < k-1){ if ((buf[i] > buf[i-1] && buf[i] > buf[i+1])||(buf[i] < buf[i-1] && buf[i] < buf[i+1])){ if (firstIndex == true){ firstIndex = false; printf("%d", i); } else printf(" %d", i); }// 判断,输出 } else if (i == 0){ if (buf[0] != buf[1]){ if (firstIndex == true){ firstIndex = false; printf("%d", i); } else printf(" %d", i); } }// 判断,输出 else{ if (buf[k-1] != buf[k-2]){ if (firstIndex == true){ firstIndex = false; printf("%d", i); } else printf(" %d", i); } }// 判断,输出 }// 处理本组 printf("\n"); }// n 组数据 }// while : zu return 0; }
http://ac.jobdu.com/problem.php?pid=1173
/** * 数组len:n * 格式:a[1...n] * * 1、对于要查找的值,不必作为数组,读一个查一个即可。 * 2、输入数据无序,先排序,二分查找 * 3、没让输出数组小标,没必要按给定格式 * 4、YES,NO后要换行 **/ #include <stdio.h> #include <algorithm> using namespace std; int main() {int n;while (scanf("%d", &n) != EOF){int buf[110];for (int i = 0; i < n; i++){scanf("%d", &buf[i]);} // read datasort(buf, buf+n);// sortint m;scanf("%d", &m);while(m-- > 0){int key;scanf("%d", &key);// 折半查找算法int high = n-1;int low = 0;int mid;while (low <= high){mid = (low + high)/2;if (buf[mid] == key){printf("YES\n");break;}else if(buf[mid] < key)low = mid + 1;else high = mid - 1;}// whileif (low > high)printf("NO\n");// 折半查找结束}// while}// while: zureturn 0; }
http://ac.jobdu.com/problem.php?pid=1069
// 好多人说因为给id,name开的空间小错误了。但是测试id开10个是没有问题// 名字要开100,所以给自己提个醒吧,开大点!你不知道服务那边的测试数据// 多么变态!///**//--资料库int n;struct S{int id; //例子给的是2为,但可能有几百学生,所以,学号位数不定,我们改为char *char name[20];char sex;int age;};//--查询int m;int ID;*/#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;struct S{char id[100]; //2 位, caution: printchar name[20];char sex[5];int age;bool operator < (const S & A) const{return strcmp(id, A.id) < 0;}} buf[1000];int main(){int n;while (scanf("%d", &n) != EOF){for (int i = 0; i < n; i++){scanf("%s %s %s %d", &buf[i].id, &buf[i].name, &buf[i].sex, &buf[i].age);} // [0,n-1]int m;scanf("%d", &m);while (m-- > 0){int ID;scanf("%d", &ID);// 二分查找开始int high = n-1;int low = 0;int mid;while (low <= high){mid = (low + high)/2;if (strcmp(buf[mid].id, ID) ==0){printf("%s %s %s %d\n", buf[mid].id, buf[mid].name, buf[mid].sex, buf[mid].age);break;}else if(strcmp(buf[mid].id, ID) < 0){low = mid+1;}else {high = mid-1;}}// 二分查找结束if (low > high)//查找失败printf("No Answer!\n");}//while:查找sort(buf, buf+n); // 输入的内容不一定有序,我们要排序}//while :多组测试return 0;}
0 0
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- 查找
- HDU 1425
- android 线程中访问UI线程的方法
- 客户机-服务器系统通信的三种常用方式
- 如何实现android中监听来电并生成悬浮窗体提示
- winform中通过事件实现窗体传值思路【待修改】
- 查找
- eclipse中clean的方法
- apt-get 命令详解(中文),以及实例
- python ‘yield’和‘Generators(生成器)’
- linux ssh 无密码连接
- 禁用viewstate怎么还保存状态?
- 简易MP3播放器实现
- uml常用流程图以及作用
- jackson序列化和反序列化(单个对象、列表)