UVa 10474 大理石在哪?
来源:互联网 发布:怎么在阿里云建数据库 编辑:程序博客网 时间:2024/06/10 12:40
思路:保存前一组数据,排序,后一组数据在前组数据中查找。
注意:题中,Be assured, none of the input numbers are greater than 10000 and none of them are negative.这句话意思是输入的每个数字都不会超过10000,所以输入规模在10000。(我本来以为这是每组数据的数字,没提到输入规模呢,输入规模前面有提到每组都不会少于65。结果我开100、1000的数组都是RE,开10010是WA。 另外,对于第二组要找的数,不必保存,可以读一个找一个)
qsort中的比较函数cmp的参数是const void * 指针,而且在函数里进行类型转化时,不要忘了转换成(int *) 或(char *)等型的指针,我怎么给转换成了(int)!!
很简单的一个题,自己做得不是很好,交了几次。。
Code:
#include<stdio.h>#include<stdlib.h>#include<string.h>int cmp_int(const void *_a, const void *_b); int marb[10010];int gues[10010];int main(){ int n,q; int cs=0; while((scanf("%d%d",&n,&q)==2)&&(n!=0||q!=0)) { cs++; memset(marb,0,sizeof(marb)); memset(gues,0,sizeof(gues)); for(int i=0;i<n;++i) scanf("%d",&marb[i]); for(int i=0;i<q;++i) scanf("%d",&gues[i]); qsort(marb,n,sizeof(int),cmp_int); /*for(int i=0;i<n;++i) printf("%d ",marb[i]); printf("\n"); for(int i=0;i<q;++i) printf("%d ",gues[i]); printf("\n");*/ printf("CASE# %d:\n",cs); for(int i=0;i<q;++i) {//遍历gues bool flag=1;//默认没找到 for(int j=0;j<n;++j) {//遍历marb if(gues[i]==marb[j]) { printf("%d found at %d\n",gues[i],j+1); flag=0; break;} else if(gues[i]<marb[j]) break; }//for if(flag) printf("%d not found\n",gues[i]); } }//while //system("pause"); return 0;}int cmp_int(const void *_a, const void *_b){ int* a=(int*)_a;//注意这里是指针,刚开始写的时候括号里竟然是int... int* b=(int*)_b; return *a-*b; }
//版本2,不保存要找的数据,输入一个,查找一个 #include<stdio.h>#include<stdlib.h>#include<string.h>int cmp_int(const void *_a, const void *_b); void search(int gues, int n);int marb[10010];int main(){ int n,q; int cs=0; while((scanf("%d%d",&n,&q)==2)&&(n!=0||q!=0)) { cs++; memset(marb,0,sizeof(marb)); for(int i=0;i<n;++i) scanf("%d",&marb[i]); qsort(marb,n,sizeof(int),cmp_int); printf("CASE# %d:\n",cs); int gues; for(int i=0;i<q;++i) { scanf("%d",&gues); search(gues,n); } /*for(int i=0;i<n;++i) printf("%d ",marb[i]); printf("\n"); for(int i=0;i<q;++i) printf("%d ",gues[i]); printf("\n");*/ }//while //system("pause"); return 0;}void search(int gues, int n){ bool flag=1;//默认没找到 for(int j=0;j<n;++j) {//遍历marb if(gues==marb[j]) { printf("%d found at %d\n",gues,j+1); flag=0; break;} else if(gues<marb[j]) break; }//for if(flag) printf("%d not found\n",gues);}int cmp_int(const void *_a, const void *_b){ int* a=(int*)_a;//注意这里是指针,刚开始写的时候括号里竟然是int... int* b=(int*)_b; return *a-*b; }
0 0
- UVa 10474 大理石在哪?
- UVa 10474 大理石在哪?
- UVA 10474 大理石在哪里
- 紫书章五 大理石在哪 UVA 10474(stl排序查找)
- 大理石在哪(Where is the Marble?, uva 10474)
- Uva 10474(lower_bound()的使用) 大理石在哪
- UVaOJ 10474 大理石在哪?
- UVa 10474 大理石在哪儿
- 大理石在哪?(Where is the Marble?, UVa 10474)代码
- 例题5-1 UVA 10474 Where is the Marble?大理石在哪?
- 大理石在哪
- 大理石在哪
- 例题:大理石在哪儿(UVa 10474)
- UVa 10474 Where is the Marble?(大理石在哪儿)
- 大理石在哪儿(UVa 10474)(排序与检索)
- uva 10474 Where is the Marble?(大理石在哪儿)
- 大理石在哪儿(Where is the marble?,UVa 10474)
- 大理石
- 关于final关键字
- TCP/IP -传输层
- Snail—不是所有的牛都叫蜗牛
- 第五章、寻找满足和为定值的两个或多个数
- 在Action中获取:request,session,application
- UVa 10474 大理石在哪?
- instanceof关键字(向下转型的验证)
- 一个IT研究生的10年规划:车、房、可爱的女儿
- jquery EasyUI的formatter格式化函数代码
- Visual Studio 2010中GetMenu()和GetSubMenu(0)引发异常的一个简单解决方法
- vs2008和SQL Server使用ADO连接方法
- 怎么实现Spring里面的基于基包名下的所有类的扫描
- JS正则表达式获取分组内容的方法详解
- 关于static静态变量