POJ3589 Number-guessing Game

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

题意

这个题的意思是说:
求问给出两个四位数,问相同位置相同的有几位,不同位置相同的有几位,最后用*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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值