萌新求助
  • 板块P1127 词链
  • 楼主lraM41
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/5/22 21:08
  • 上次更新2023/10/28 21:15:30
查看原帖
萌新求助
824865
lraM41楼主2023/5/22 21:08

为什么感觉差不多的两份代码,一份AC,一份64?(萌新去睡觉了,明天看)

100:

#include<bits/stdc++.h>
using namespace std;
int n,in[1005],out[1005];
vector<int > v[1005];
string a[1005];
bool f[1005];
void dfs(int k,int t,string qwq){
   if(t==n) qwq.erase(qwq.size()-1,1),cout<<qwq,exit(0);
   for(int i=0;i<v[k].size();i++){
      int l=v[k][i];
      if(!f[l]){
         f[l]=1;
         dfs(l,t+1,qwq+a[l]+'.');
         f[l]=0;
      }
   }
}
signed main()
{
   cin>>n;
   for(int i=1;i<=n;i++) cin>>a[i],in[a[i][0]]++,out[a[i][a[i].size()-1]]++;
   sort(a+1,a+n+1);
   for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
         if(i!=j&&a[i][a[i].size()-1]==a[j][0])
            v[i].push_back(j);
   for(int i=1;i<=n;i++)
      if(in[a[i][0]]-1==out[a[i][0]]){
         f[i]=1;
         dfs(i,1,a[i]+'.');
         f[i]=0;
      }
   f[1]=1;
   dfs(1,1,a[1]+'.');
   puts("***");
   return 0;
}

64:

#include<bits/stdc++.h>
using namespace std;
int n,in[1005],out[1005];
vector<int > v[1005];
string a[1005];
bool f[1005];
void dfs(int k,int t,string qwq){
   if(t==n) /*qwq.erase(qwq.size()-1,1),*/cout<<qwq,exit(0);
   for(int i=0;i<v[k].size();i++){
      int l=v[k][i];
      if(!f[l]){
         f[l]=1;
         dfs(l,t+1,qwq+'.'+a[l]);
         f[l]=0;
      }
   }
}
signed main()
{
   cin>>n;
   for(int i=1;i<=n;i++) cin>>a[i],in[a[i][0]]++,out[a[i][a[i].size()-1]]++;
   sort(a+1,a+n+1);
   for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
         if(i!=j&&a[i][a[i].size()-1]==a[j][0])
            v[i].push_back(j);
   for(int i=1;i<=n;i++)
      if(in[a[i][0]]-1==out[a[i][0]]){
         f[i]=1;
         dfs(i,1,a[i]);
         f[i]=0;
      }
   f[1]=1;
   dfs(1,1,a[1]+'.');
   puts("***");
   return 0;
}
2023/5/22 21:08
加载中...