这里是本咸鱼的第一篇博客,由于被一道水题给搞的要死要活的,心态爆炸,于是去问了下大佬鼠,然后知道了不少东西,在这里记录一下,先粘下这个水题
再粘上咸鱼我的错误代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[100],sum=0,t=0,p;
while(1){
cin>>a[0];
while(a[t]!=0){
p=0;
for(int i=0;i<t;i++)
if(a[t]==a[i])
p=1;
if(p!=1)
sum++;
t++;
cin>>a[t];
}
if(sum>=12)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
if(a[0]==0)
break;
t=0;
sum=0;
}
}
大佬告诉我我的代码输出超限了
因为交题默认多组输入是有限行,而我的则是可以输入无限行,所以出现了这个结果
再再粘上大佬的代码
#include<bits/stdc++.h>
using namespace std;
int bk[12222];
int sum=0;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
f1:
int f=0;
sum=0;
memset(bk,0,sizeof(bk));
int n;
while(cin>>n){
f=1;
if(n==0)
break;
if(bk[n]==0){
bk[n]=1;
sum++;
}
}
if(f==0)
return 0;
if(sum>=12)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
goto f1;
}
这里他用了一个平时不让用的goto语句来判断,如果能输入就继续运行,
如果输入的不是int类型的n就 return 0 来结束程序
这里的while语句判断需要注意
while(cin>>n){
f=1;
if(n==0)
break;
if(bk[n]==0){
bk[n]=1;
sum++;
}
我一开始以为是cin >>n!=0是判断条件,但其实是通过输入的n的类型来判断的,如果输入的n是int类型,进行while循环(输入0也进行循环),不然就不进行while循环,然后借助开关f来判断最后是输出结果还是 return 0
题外话:
以前光想着多学点骚东西,但这种基础的东西却没学好,以后还是得多注意一下格式,省的老WA搞得心态爆炸
最后大佬还跟我说了一些考题会考结束格式的,例如不知道输入多少行,其他各行之间都有回车但最后一行没有回车之类的,这些等我见到再说吧