题意
这个题的意思是说:
求问给出两个四位数,问相同位置相同的有几位,不同位置相同的有几位,最后用*A*B的形式打印出来
思路
用字符数组去接几个数字,这样不用分离各位,然后得到各位数字的方法如下:
char s[4];
int num[4];
for(int i=0;i<4;i++) num[i]=s[i]-‘0’; ASCII值的方法
最后把两个数的各位做一次二重循环比较即可
代码
#include <iostream>
using namespace std;
void Judge(char *s1,char *s2){ //判断并输出结果
int num1[4],num2[4],a=0,b=0,i;
for(i=0;i<4;i++){
num1[i]=s1[i]-'0';
num2[i]=s2[i]-'0';
}
for(i=0;i<4;i++){
for(int j=0;j<4;j++){
if(num1[i]==num2[j] && i!=j){
b++;
}
else if(num1[i]==num2[i] && i==j){
a++;
}
}
}
cout<<a<<"A"<<b<<"B"<<endl;
}
int main(){
int n;
char s1[5],s2[5];//这个地方开始也是醉了,内存不够导致错误+_+
cin>>n;
while(n--){
cin>>s1>>s2;
Judge(s1,s2);
}
return 0;
}

本文详细阐述了一个求解四个数字中相同位置相同与不同位置相同数字数量的算法,通过使用字符数组简化操作,并提供了一个C++代码实现。此题目的核心在于理解数字比较和计数的基本算法。
6641

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



