考察知识点
1、将一个棋盘的二维数组a[ ][ ]
数据转换成一个string
的字符串进行比较。
2、第一种方法直接暴力枚举,第二种方法使用STL
的哈希表进行查询。
3、unordered_map
表示哈希表,定义时可以使用unordered_map <string,int> mp
,表示下标为string
,例如:mp[gqewrghg] = 3
。
代码与分析
第一种(暴力枚举)
#include<bits/stdc++.h>
using namespace std;
const int N = 105;
string g[N];
int main(){
//输入需要查询的次数
int n;
cin>>n;
//按照次数每一个次数一一进行判断计数
for(int i=0;i<n;i++){
//将每次的查询的棋盘进行输入,将一个棋盘变为一个字符串
for(int j=0;j<8;j++){
string len;
cin>>len;
g[i] = g[i] + len;
}
//cnt记录此字符串出现的次数
int cnt = 0;
//从第一个字符串开始到此时的字符串进行比较,在判断相同的字符串之后,进行添加
for(int q=0;q<i;q++){
if(g[i]==g[q]){
cnt++;
}
}
//在判断完之后,连同自己的这一次次数,在结果进行加一
cout<<++cnt<<endl;
}
return 0;
}
第二种 哈希表
#include<bits/stdc++.h>
using namespace std;
unordered_map <string,int> mp;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
string x = "";
for(int j=0;j<8;j++){
string len;
cin>>len;
x=x+len;
}
mp[x]++;
cout<<mp[x]<<endl;
}
return 0;
}