因为研一开设了算法设计与分析课程,9月份的CSP成绩会加权算到期末成绩里,最近开始刷CSP的历史真题。各位大佬如果有更好的做法欢迎指点。
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
string pan[800];
//用字符串数组来表示棋盘,设置成全局变量方便用函数统计出现次数
int f[100];
//用来记录局面是第几次出现
bool isequal(int start_line1,int start_line2){ //比较相应棋盘是否相等
int i,j;
for(i = start_line1,j = start_line2;i < start_line1 + 8 && j < start_line2 + 8; i++,j++){
if(pan[i] != pan[j]){
return false;
}
}
return true;
}
int main(){
int n,i,j;
cin >> n; //输入步数n
for(i = 0;i < 8 * n;i++){ //输入棋盘
cin >> pan[i];
}
//开始比较,先把全部的都置为1
for(i = 0; i < 100 ; i++){
f[i] = 1;
}
for(i = 0; i < n ; i++){
for(j = i + 1; j < n ; j++){
if(isequal(i * 8 , j * 8)){
f[j]++;
}
}
}
for(i = 0; i < n ;i++){
cout << f[i] << endl;
}
return 0;
}