前言
推荐书目,在这里推荐那一本《算法笔记》(胡明),需要PDF的话,链接如下
「链接:https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?pwd=6vdq# 提取码:6vdq”复制这段内容后打开手机迅雷App,查看更方便」
希望有大神能够提供改良意见,敬礼!
---------------------------------------------------------------------------------------------------------------------------------
题目
【题目描述】
【输入格式】
【输出格式】
【样例 1 输入】
8
********
******pk
*****r*p
p*pQ****
********
**b*B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
******k*
******p*
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
******k*
******p*
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
********
******pk
******rp
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
【样例 1 输出】
1
1
1
1
1
2
2
1
【样例 1 解释】
【样例 2 输入】
【样例 2 输出】
【样例 2 解释】
【样例 3 输入】
【样例 3 输出】
【样例 3解释】
【子任务】
思路分析:
本题的思想比较简单,主要思想就是对比,使用一个结构体存储一步的局面,使用该结构体对象数组来存储,下标就是对应的步数的局面。
装载一个数据后,马上遍历对比之前的所有内容,当其中两个局面全都相等result就+1。以此类推。
代码也很短。求大佬提供更好的办法。
代码如下:
#include <bits/stdc++.h>//万能头文件
using namespace std;
struct station{
string s[8];
};
int main() {
int n=0;//n是走的步数
//const int N=10000;
cin>>n;
struct station s1[n];
int result =1;//存储结果
int issame=0;//存储对比结果,==8就是都相等
for(int i=0;i<n;i++){//输入
result=1;
issame=0;
for(int j=0;j<8;j++) {
cin>>s1[i].s[j];
}//装载成功
for(int i1=0;i1<i;i1++){//对比之前的每一个
issame=0;
for(int j=0;j<8;j++){
if(s1[i1].s[j]==s1[i].s[j]){
issame++;//相等记录+1
}
}
if(issame==8){//记录为8则是复现
result++;
}
}
cout<<result<<endl;
}
//cout<<result<<endl;
return 0;
}