啊啊啊啊啊啊啊感觉很久都没更了 三下乡好麻烦!(明明听说很水来着!
回归正题
这道题很简单啊!
大多不会做就只是因为其题意不清
其实题意就是给你几个字母 这几个字母一定是连续的从0开始1 2 3 4.......
哦 这样一看 岂不是煞笔题 统计每个字母数量
然后判断合法性
最后要注意的是他输出要和他给出的顺序输出 就没了
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
const int M = 5e5+10;
const int mod = 1e9+7;
#define int long long
#define endl '\n'
#define Endl '\n'
#define inf 0x3f3f3f3f3f3f3f3f
#define fast ios::sync_with_stdio(false);cin.tie(nullptr);
int max(int x,int y){return x>y?x:y;}
int min(int x,int y){return x<y?x:y;}
signed main() {
fast
int n;cin>>n;
char c;cin>>c;
map<string,int>mp;
string a[N];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==1&&j==1)continue;
else {string s;cin>>s;mp[s]++;if(i==1)a[j]=s;}
}
}
set<int>st;
string b[N];
for(int i=2;i<=n;i++){
for(auto j:mp){
if(j.first==a[i]){
st.insert(j.second);
b[j.second-1]=j.first;
}
}
}
if(st.size()!=n-1){
cout<<"ERROR!";
return 0;
}
for(int i=2;n>=3&&i<=n-1;i++){
string s=b[3]+b[i];
int flag=0;
for(auto j:mp){
if(j.first==s){
flag=1;
if(j.second!=n-i){
cout<<"ERROR!"<<endl;
return 0;
}
}
}
if(!flag){
cout<<"ERROR!"<<endl;
return 0;
}
}
for(int i=2;i<=n;i++){
for(auto j:mp){
if(j.first==a[i]){
cout<<j.first<<'='<<j.second-3<<' ';
}
}
}
cout<<endl;
cout<<n-1<<endl;
return 0^0;
}