数组开大点?
by wjl_100930 @ 2023-08-13 11:16:32
@[wjl_100930](/user/734249) 已经试过了
by KingGojianOfYue @ 2023-08-13 11:24:32
你RE的点上显示的是 ```Segmentation fault with invalid memory reference.``` 可能是数组越界了
by wjl_100930 @ 2023-08-13 11:27:24
你的vector空间太大了,我做了一点点修改
不re,但是有wa的,因为我不清楚你的思路是怎么样的,我把vector里面存的东西改为int了
```cpp
#include<bits/stdc++.h>
using namespace std;
string s[10001],c;
int n,z,x;
int f[128];
vector<int>v[128];
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){
cin>>s[i];
f[s[i][0]]++;
f[s[i][s[i].size()-1]]--;
}
for(int i=0;i<128;i++){
if(f[i]>0){
z+=f[i];
x=i;
}
}if(z>1){
printf("***");
}
sort(s,s+n);
for(int i=n-1;i>=0;i--){
v[s[i][0]].push_back(i);
}
if(z==1){
for(int i=0;i<n;i++){
if(i)printf(".");
c=s[v[x][v[x].size()-1]];
printf("%s",c.c_str());
v[x].pop_back();
x=c[c.size()-1];
}
}else{
for(int i=0;i<128;i++){
if(!v[i].empty()){
x=i;
break;
}
}
for(int i=0;i<n;i++){
if(i)printf(".");
c=s[v[x][v[x].size()-1]];
printf("%s",c.c_str());
v[x].pop_back();
x=c[c.size()-1];
}
}
return 0;
}
```
by mori_ @ 2023-08-13 11:32:03
@[zhangziyue2357](/user/765376)
by mori_ @ 2023-08-13 11:32:14
判断无解的代码我没改你的,但是判错了,你再看看吧
by mori_ @ 2023-08-13 11:37:06
@[mori_](/user/339311) 谢大佬指点
by KingGojianOfYue @ 2023-08-13 13:47:45