排序检索-340 Master-Mind Hints

题目大意:统计secret与guess中数字相同且位置相同的个数,以及数字相同但位置不同的个数

解题过程:一次AC

正确代码:

# include <cstdio>
# include <cstdlib>
# include <ctime>
# include <cmath>
# include <iostream>
# include <fstream>
# include <cstring>
# include <string>

//*
#define fin cin
#define fout cout
//*/

using namespace std;

/*
ifstream fin("in.txt");
ofstream fout("out.txt");
//*/
int cmp(const void* a,const void* b){
	return (*(int*)a)-(*(int*)b);
}
int secret[1000];
int guess[1000];
int tempofsecret[1000];
int tempofguess[1000];
int main()
{
	int cases=0;
	int n=1001;
	fin>>n;
	while(n!=0){
		cases++;
		fout<<"Game "<<cases<<":"<<endl;
		for(int i=0;i<n;i++){
			fin>>secret[i];
		}
		for(int i=0;i<n;i++){
			fin>>guess[i];
		}
		while(guess[n-1]!=0){
			int strong=0,weak=0,numoftemp=0;
			for(int i=0;i<n;i++){
				if(secret[i]==guess[i]) {
//					fout<<"strong:"<<i<<" "<<secret[i]<<endl;
					strong++;
				}
				else{
					
					tempofsecret[numoftemp]=secret[i];
					tempofguess[numoftemp]=guess[i];
			//		fout<<"copy"<<tempofsecret[numoftemp]<<" "<<tempofguess[numoftemp]<<endl;
					numoftemp++;
				}
			}
			qsort(tempofsecret,numoftemp,sizeof(tempofsecret[0]),cmp);
			qsort(tempofguess,numoftemp,sizeof(tempofguess[0]),cmp);
			
			for(int i=0,j=0;i<numoftemp&&j<numoftemp;){
				if(tempofsecret[i]==tempofguess[j]){
//					fout<<"weak:"<<i<<" "<<j<<" "<<tempofsecret[i]<<endl;
					weak++;
					i++;
					j++;
				}
				else{
					if(tempofsecret[i]<tempofguess[j]){
						i++;
					}
					else j++;
				}
			}
			fout<<"    ("<<strong<<","<<weak<<")"<<endl;
			for(int i=0;i<n;i++){
				fin>>guess[i];
			}
		}
		fin>>n;
	}
	return 0;
 } 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值