p9958题解

· · 题解

P9958题解

题意

题目共三种情况,第一种是在第一个,第二种是在第二个,第三种是在第三个。

那么,题目给了我们这些信息,我们就可以直接写代码了。

思路+代码

#include<bits/stdc++.h>//万能头文件
using namespace std;
struct node{//创建输入数组
    int a,b,g;

}a[105];
int shishi[5];//鹅卵石实时情况
int main(){
    int n;cin>>n;//输入个数
    for(int i=1;i<=n;i++) cin>>shishi[i].a>>shishi[i].b>>shishi[i].g;//输入每次交换情况
    int maxn=0;//定义最大值存储变量
    for(int i=1;i<=3;i++){//进行三次判断:在第一个、第二个和第三个
        int x=0;//这一次的次数
        w[i]=1;
        for(int j=1;j<=n;j++){//进行判断
            swap(w[shishi[j].a],w[shishi[j].b]);//进行交换
            if(w[shishi[j].g]==1) x++;//如果猜中就增加,否则不变
        }
        maxn=max(x,maxn);//判断最大值
        memset(w,0,sizeof w);//清空数组函数(memset)
    }
    cout<<maxn;//输出最大值
    return 0;
}

最后说一下个人看法:其实这道题不算太难,跟着题意写代码就行了,也不用什么过于高深的函数,只要仔细点,都是可以做出来的。