求助 string 的内存分配问题
  • 板块学术版
  • 楼主Ivan422
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/11 12:52
  • 上次更新2024/6/11 17:21:21
查看原帖
求助 string 的内存分配问题
662425
Ivan422楼主2024/6/11 12:52

在代码中,我使用了

ns=ser+s[i];

语句,发现输出错误的 choku_dai_dai。

但是,当我使用

string ns=ser+s[i];

语句,输出了我想要的答案 choku__dai。

完整代码:

#include<bits/stdc++.h>
using namespace std;
const int N=10;
string s[N],t,ns,uline;
int n,m;
bool use[N];
set<string>mp;
bool dfs(string ser,int stp){
    if(stp>n){
        if((int)ser.size()>=3&&(int)ser.size()<=16){
            if(mp.find(ser)==mp.end()){
                cout<<ser;
                return 1;
            }
        }
        return 0;
    }
    for(int i=1;i<=n;i++)if(!use[i]){
        use[i]=1;
        ns=ser+s[i];
        if(stp==n){
            if(dfs(ns,stp+1))return 1;
        }else for(;;){
            ns+="_";
            if(ns.size()>16)break;
            if(dfs(ns,stp+1))return 1;    
        }
        use[i]=0;
    }
    return 0;
}
signed main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){cin>>s[i];}
    for(int i=1;i<=m;i++){cin>>t;mp.insert(t);}
    if(!dfs("",1))cout<<"-1";
    return 0;
}

样例:

2 2
choku
dai
chokudai
choku_dai

2024/6/11 12:52
加载中...