#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
int ans[4];
int n;
int num[4];
int a,b;
while(scanf("%d %d %d %d",&ans[0],&ans[1],&ans[2],&ans[3]))
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
bool check[4]={0};
a=0;
b=0;
scanf("%d %d %d %d",&num[0],&num[1],&num[2],&num[3]);
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(check[j]==1)
continue;
if(ans[i]==num[i])
{
a++;
check[i]=1;
break;
}
else if(ans[i]==num[j])
{
b++;
check[j]=1;
break;
}
}
printf("%dA%dB\n",a,b);
}
}
return 0;
}
1.
while(scanf("%d %d %d %d",&ans[0],&ans[1],&ans[2],&ans[3]))
2.
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(check[j]==1)
continue;
if(ans[i]==num[i])
{
a++;
check[i]=1;
break;
}
else if(ans[i]==num[j])
{
b++;
check[j]=1;
break;
}
}
1. 這樣會無限迴圈,改成while(scanf("%d %d %d %d",&ans[0],&ans[1],&ans[2],&ans[3])!=EOF)
2. 先檢查完A再檢查B,不然如果正確的密碼有重複的數字就會出問題
謝謝!我以為是我的程式碼太慢所以一直改進 我一開始就是先算A再算B,while(scanf("%d %d %d %d",&ans[0],&ans[1],&ans[2],&ans[3])!=EOF)不過我是第一次看到這種語法