1782:谁是你的潜在朋友
失败代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
int N,M;
int P[201];
int i,j;
int fnum;
scanf("%d%d%*c",&N,&M);
if(N>=2 && M<=200){
for(i=0;i<N;i++){
scanf("%d%*c",&P[i]);
}
for(i=0;i<N;i++){
fnum=0;
for(j=0;j<N;j++){
if(P[i] == P[j])
fnum++;
}
if(fnum == 1)
printf("BeiJu\n");
else
printf("%d\n",fnum-1);
}
}
return 0;
}
符合结果:
样例输入
4 5
2
3
2
1
样例输出
1
BeiJu
1
BeiJu
测试文件:/test0.out 结果:答案错误 =======原因====== 当参考答案输出: BeiJu -------时--------- 你的程序输出:
通过答案:
我就呵呵呵呵呵呵呵呵呵了。。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
int N,M;
int P[201];
int i,j;
int fnum;
while(scanf("%d %d%*c",&N,&M)!=EOF){
if(N>=2 && M<=200){
for(i=0;i<N;i++){
scanf("%d%*c",&P[i]);
}
for(i=0;i<N;i++){
fnum=0;
for(j=0;j<N;j++){
if(P[i] == P[j])
fnum++;
}
if(fnum > 1)
printf("%d\n",fnum-1);
else
printf("BeiJu\n");
}
}
}
return 0;
}
if(fnum == 1)
printf("BeiJu\n");
else
printf("%d\n",fnum-1);
与
if(fnum > 1)
printf("%d\n",fnum-1);
else
printf("BeiJu\n");
是一个意思。
之所以结果不一样是因为:输入要是
while(scanf("%d %d%*c",&N,&M)!=EOF)
如果是
scanf("%d %d%*c",&N,&M)
就错。。。可是题目没有明确要求需要连续输入数据。。。
以后还是能用while(scanf)就用while(scanf)吧
学会代码优化:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, m, n, fir;
int people[200];
while(scanf("%d %d", &n, &m) != EOF)
{
for(i = 0; i < n; i ++)
{
scanf("%d", &people[i]);
}
for(i = 0; i < n; i ++)
{
for(j = fir = 0; j < n; j ++)
{
if(j != i && people[j] == people[i])
fir ++;
}
if(fir > 0)
printf("%d\n", fir);
else
printf("BeiJu\n");
}
}
return 0;
}