E文不夠好,題目意思沒有看明白。看了別人題解上講述的題目大意加上樣例分析,大致理解了。
題目意思是這樣的,給出兩個(gè)序列A、B,對(duì)于A[i]==B[j],如果i==j,那么這是一個(gè)strong對(duì),否則這是一個(gè)weak對(duì)。題目要求先找出所有的strong對(duì),然后找出weak對(duì)(一對(duì)數(shù)字只能用一次)。
這樣的模擬題還是不能急,心里要對(duì)過程很明白,一步一步來,不要怕代碼長(zhǎng)。
以下是我的代碼:
#include<cstdio>
#include<cstring>
using namespace std;
const int kMaxn(1007);
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
int T(0),n;
while(scanf("%d",&n)==1 && n)
{
int code[kMaxn];
for(int i=1;i<=n;i++)
scanf("%d",&code[i]);
T++;
printf("Game %d:\n",T);
int guess[kMaxn];
for(int i=1;i<=n;i++)
scanf("%d",&guess[i]);
while(guess[1])
{
int t[kMaxn];
memcpy(t,code,kMaxn*sizeof(int));
int strong(0),weak(0);
for(int i=1;i<=n;i++)
if(t[i]==guess[i])
{
strong++;
t[i]=guess[i]=0;
}
for(int i=1;i<=n;i++)
{
if(!t[i])
continue;
for(int j=1;j<=n;j++)
if(t[i]==guess[j])
{
weak++;
t[i]=guess[j]=0;
break;
}
}
printf(" (%d,%d)\n",strong,weak);
for(int i=1;i<=n;i++)
scanf("%d",&guess[i]);
}
}
return 0;
}
posted on 2011-04-09 00:35
lee1r 閱讀(1114)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
題目分類:基礎(chǔ)/模擬