题目:输入N个数字。然后再输入任意组N个数字。判断两个数字:1 位置完全一致 判断完1后 2:位置不一致但是在两组中都存在
注意:1 我的想法主要是判断完后删除对应数字,听了同学思路发现根本不需要,因为数字范围是1~9,所以判断完置为0即可
2 在判断第二类数字,查找时,找到后及时break出for循环,否则会重复计算
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<cstdio>
#include<iostream>
#include<math.h>
#include <map>
#include <vector>
#include <algorithm>
#include <sstream>
#include <queue>
#define N 1000
using namespace std;
int main()
{
int length;
int num = 1;
while (cin>>length && length) {
//输出
cout<<"Game "<<num++<<":"<<endl;
int original[N]={0};
for(int i = 0 ;i < length; i++){
cin>>original[i];
}
int original_temp[N]={0};
for(int i = 0 ;i < length; i++){
original_temp[i]=original[i];
}
int match[N]={0};
while(1){
for(int i = 0 ;i < length; i++){
original[i]=original_temp[i];
}
for(int i = 0 ;i < length; i++){
cin>>match[i];
}
if(match[0]==0)break;
//判断第一个数
int no1=0;
for(int i = 0 ;i < length; i++){
if(original[i] == match[i]){
original[i] = 0;
match[i] = 0;
no1++;
}
}
//判断第二个数
int no2=0;
for (int i = 0 ;i < length; i++) {
if (original[i] == 0) {
continue;
}
int temp = original[i];
for(int j = 0 ;j < length; j++){
if (match[j] == temp) {
original[i] = 0;
match[j] = 0;
no2++;
break;
}
}
}//for
//输出
cout<<" ("<<no1<<","<<no2<<")"<<endl;
}//while(1)
}
return 0;
}
/*
4
1 3 5 5
4 3 3 5
1 1 2 3
6 5 5 1
6 1 3 5
1 3 5 5
0 0 0 0
10
1 2 2 2 4 5 6 6 6 9
1 2 3 4 5 6 7 8 9 1
1 1 2 2 3 3 4 4 5 5
1 2 1 3 1 5 1 6 1 9
1 2 2 5 5 5 6 6 6 7
0 0 0 0 0 0 0 0 0 0
0
///////
10
0 2 0 0 4 5 6 6 6 9
0 1 0 0 3 3 4 4 5 5
1 1 2 2 3 3 4 4 5 5
0 0 0 0 0 0 0 0 0 0
0
*/
本文介绍了一个简单的数字匹配游戏算法实现,该算法通过判断两组数字中位置相同或不同但存在的数字,来完成游戏中的匹配过程。文章提供了完整的C++代码示例,并详细解释了如何通过设置数字为0来避免重复计算。
838

被折叠的 条评论
为什么被折叠?



