蛤?建议去 luogu IDE 试一下
by E1_de5truct0r @ 2022-01-29 21:07:58
@[chaotic](/user/218250) luogu IDE 上样例过不了,建议检查初始值等问题
by E1_de5truct0r @ 2022-01-29 21:09:09
谢谢,我改了一下,A了125,但34仍Wa
这次测试点3在IDE都过了
但评测就是WA
测试点3:
6 + M L K N H
M L H M MK N
L H N L MM MK
K M L K N H
N MK MM N MH ML
H N MK H ML MM
M=1 L=2 K=0 N=4 H=3
5
```
#include<bits/stdc++.h>
using namespace std;
int n,a,b,c,st,en;
string tmp,s[10],p[10][10];
map<char,int> m;
bool flag[10];
int calc(int x,string q)
{
// cout<<q<<endl;
int ret=0;
for(int i=0;i<q.length();i++)
{
ret=ret*x+m[q[i]];
// printf(" #%c# ",q[i]);
}
return ret;
}
int check(int x,int w)
{
if(w==n-1)
{
// for(int i=2;i<=n;i++) printf("%c %d ",p[1][i][0],m[p[1][i][0]]);
// printf("\n");
for(int i=2;i<=n;i++)
{
for(int j=2;j<=n;j++)
{
a=m[p[i][1][0]];
b=m[p[1][j][0]];
c=calc(x,p[i][j]);
// cout<<a<<" "<<b<<" "<<c<<endl;
// printf(" %c %c \n",p[i][1][0],p[1][j][0]);
if(a+b!=c) return 0;
}
}
for(int i=2;i<=n;i++)
{
cout<<p[1][i];
printf("=%d ",m[p[1][i][0]]);
}
printf("\n%d",x);
return 1;
}
for(int i=0;i<x;i++)
{
if(!flag[i])
{
flag[i]=1;
m[p[1][w+2][0]]=i;
if(check(x,w+1)) return 1;
flag[i]=0;
m.erase(p[1][w+2][0]);
}
}
return 0;
}
int main()
{
scanf("%d ",&n);
for(int i=1;i<=n;i++)
{
getline(cin,s[i]);
if(i!=n) s[i].erase(s[i].length()-1);
s[i]+=" ";
}
for(int i=1;i<=n;i++)
{
p[i][1]=s[i].substr(0,s[i].find(" "));
for(int j=2;j<=n;j++)
{
st=s[i].find(" ")+1;
s[i][s[i].find(" ")]='#';
en=s[i].find(" ");
p[i][j]=s[i].substr(st,en-st);
}
}
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=n;j++) cout<<p[i][j];
// cout<<endl;
// }
int i=n-1;
while(1)
{
if(i>10) break;
if(check(i,0)) return 0;
i++;
}
printf("ERROR!\n");
return 0;
}
```
求调!
by chaotic @ 2022-01-29 22:00:11
我心态炸了
getline读入会读\n
每个测试点又不全有\n
终于处理好了
```
for(int i=1;i<=n;i++)
{
getline(cin,s[i]);
while(s[i][s[i].length()-1]!=' '&&!(s[i][s[i].length()-1]>='A'&&s[i][s[i].length()-1]<='Z')) s[i].erase(s[i].length()-1);
s[i]+=" ";
}
```
此帖完结
by chaotic @ 2022-01-29 22:11:58