社区讨论

67分求调

P1019[NOIP 2000 提高组] 单词接龙(疑似错题)参与者 14已保存回复 21

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
21 条
当前快照
1 份
快照标识符
@mkhll5fh
此快照首次捕获于
2026/01/17 08:57
上个月
此快照最后确认于
2026/01/17 09:35
上个月
查看原帖
我的代码:
CPP
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
string words[21];
int used[21];
int n,ans;
char start;
int getOverlap(string a,string b){
    int maxOver=min(a.length()-1,b.length()-1);
    for(int i=maxOver;i>=1;i--){
        if(a.substr(a.length()-i)==b.substr(0,i))return i;
    }
    return 0;
}
void dfs(string current,int length){
    if(length>ans)ans=length;
    for(int i=0;i<n;i++){
        if(used[i]>=2)continue;
        int overlap=getOverlap(current,words[i]);
        if(overlap>0){
            used[i]++;
            dfs(words[i],length+words[i].length()-overlap);
            used[i]--;
        }
    }
}
int main(){
    cin>>n;
    for(int i=0;i<n;i++)cin>>words[i];
    cin>>start;
    ans=0;
    for(int i=0;i<n;i++){
        if(words[i][0]==start){
            used[i]=1;
            dfs(words[i],words[i].length());
            used[i]=0;
        }
    }
    cout<<ans<<endl;
    return 0;
}
请问他拿错了,哪位大神可以帮我解决下.
另外,加入我的入门组官方团队(https://www.luogu.com.cn/team/122126) ,和我一起进步!!!

回复

21 条回复,欢迎继续交流。

正在加载回复...