求大佬看看,语法有错误
  • 板块P1127 词链
  • 楼主我爱杨帆
  • 当前回复4
  • 已保存回复4
  • 发布时间2020/9/4 22:30
  • 上次更新2023/11/5 13:44:03
查看原帖
求大佬看看,语法有错误
363495
我爱杨帆楼主2020/9/4 22:30

terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

#include<bits/stdc++.h>
using namespace std;
int num[100];
vector<int> a[1005];
bool check[1005],flag;
int n,giao;string s[1005],ans[1005]; 
int start=1,sum;
void dfs(int x,int step)
{   
    if(flag)
    return;
    if(step==n)
    {
    	flag=1;
    	return;
	}
	for(int i=0;i<a[x].size();i++)
	 {	
	 if(check[a[x][i]])
	 continue;
	 check[a[x][i]]=1;
	 ans[++sum]=s[a[x][i]];
	 dfs(a[x][i],step+1);
	 }
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	  cin>>s[i];
	for(int i=1;i<=n;i++)  
	  {
	  num[s[i][0]]++;
	  num[s[i].size()-1]++;
	  }
	sort(s+1,s+n+1);
    for(int i=1;i<=n;i++)
     for(int j=1;j<=n;j++)
      {
      	if(i==j) 
      	continue;
      	if(s[i][s[i].size()-1]==s[j][0])	
		 a[i].push_back(j);	
	  }
	 
	for(int i=1;i<=n;i++)
	 if(num[s[i][s[i].size()-1]]-num[s[i][0]]==1)
	  {
	  	start=i;
	  	break;
	  }
	check[start]=1;
	ans[++sum]=s[start];  
	dfs(start,1);
	if(!flag)
	{
		cout<<"***";
		return 0;
	}
	cout<<ans[1];
	for(int i=2;i<=n;i++)
	{
		cout<<"."<<ans[i];
	}
}
2020/9/4 22:30
加载中...