题解UVA12854 Automated Checking Machine

· · 题解

题解:UVA12854 Automated Checking Machine

因为我没有 UVA 的账号,无 AC 记录请谅解。

题意分析:

有不确定组样例输入,每组样例有两个长度为 501 串,求判断这两个 01 串的每一位是否都不相同,都不相同输出Y,否则输出N

思路:

首先这是一个无样例数的题,那必然要用到while,先输入到一个数组中,再遍历查找(我发现这题没有人用双指针,那就用双指针做做吧)。

解释:

先定义一个数组 a,利用while输入 10 个数,然后利用双指针遍历,i 遍历前五个数,j 遍历后五个数,判断 a_i = a_j 即可,详细请看代码。(其实我觉得我的代码还是易读的,如果又不懂的地方请在评论中发表疑问哦)

代码:

//(理解万岁,请勿复制粘贴)

#include<bits/stdc++.h>
using namespace std;
int a[20]; //定义数组
int main(){
    while(cin>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]>>a[7]>>a[8]>>a[9]>>a[10]){//用 while 输入
        bool f=1;//定义开关变量并赋值为开
        for(int i=1,j=6;i<=5,j<=10;i++,j++){//运用双指针遍历
            if(a[i]==a[j]){//只要遇到相等的
                cout<<"N"<<endl;//直接输出 N
                f=0;//开关赋值为关
                break;//直接跳出循环
            }
        }
        if(f)cout<<"Y"<<endl;//如果开关变量是开,那么输出 Y
    }
}

最后,感谢大家的阅读,审核大大求过。