您的位置:首页 > 其它

uva 340 Master-Mind Hints 模拟

2017-09-08 15:59 381 查看




题目大意:

题目就是一个猜数字游戏,给定答案序列和用户猜序列,统计有多少数字位置正确,有多少数字在两个序列都出现过但是位置不对,

题目解析:

首先我们可以算出位置相同的个数A,也可以算出总的一共有多少个数字在两个字符串中都出现过,数目为B,所以位置不同但是在两个字符串中都出现的个数为B-A;、

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1005;

int a[maxn];
int b[maxn];
int c[maxn];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n;
int cas=0;
while(cin>>n&&n)
{
cas++;
cout<<"Game "<<cas<<":"<<endl;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(int i=0; i<n; i++)
cin>>a[i];
while(1)
{
int cnt1=0,cnt2=0;
for(int i=0; i<n; i++)
cin>>b[i];
if(b[n-1]==0) break;

for(int i=0; i<n; i++)
{
if(a[i]==b[i])
cnt1++;
c[i]=a[i];
}

//cout<<"cnt1="<<cnt1<<endl;
sort(c,c+n);
sort(b,b+n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(c[i]==b[j])
{b[j]=-1;cnt2++;break;}
}
cout<<" ("<<cnt1<<","<<cnt2-cnt1<<")"<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: