Book Club http://ecustoj.sinaapp.com/problemshow.php?pro_id=428
这道模拟题,应该注意输入输出格式,这里非常容易出问题,几次测试不过都是这里出的问题。
#include<cstdio> #include<cstring> using namespace std; int a[50005][55]; int vis[50005]; int main() { int N,NQ,P,Q,A,count,i,j; while(scanf("%d %d %d",&N,&NQ,&P)!=EOF) { count=0; memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); for(i=1;i<=N;i++) for(j=0;j<NQ;j++) scanf("%d",&a[i][j]); for(i=1;i<=P;i++) { scanf("%d %d",&Q,&A); for(j=1;j<=N;j++) { if(a[j][(Q-1)]==A) vis[j]++; } } for(i=1;i<=N;i++) { if(vis[i]==P) count++; } printf("%d\n",count); } return 0;
}
scanf("%s",&s); //读入一个字符串s,遇到空格或者换行符时停止;("%s"为字符串的格式控制符) gets(s); //读入一行字符,可以接收空格; printf("%s",s); //输出一个字符串; puts(s); //将字符串输出在一行上;
存在这样一种用法,先char a[100],然后gets(a),假设输入的字符串是10个字符,那么会gets自动在最后一位后加上一个‘\0’,这样一来,我们可以for(i=1;a[i]!='\0';i++)在已经输入的那些字符串中进行搜索,而不去管空的数组空间,另外数字在字符中是这样‘0’,‘1’,‘5’的。