您的位置:首页 > 科技 > IT业 > 软件下载站网站源码免费_动画制作视频_双11各大电商平台销售数据_百度seo有用吗

软件下载站网站源码免费_动画制作视频_双11各大电商平台销售数据_百度seo有用吗

2025/5/16 9:10:53 来源:https://blog.csdn.net/weixin_45413272/article/details/147147893  浏览:    关键词:软件下载站网站源码免费_动画制作视频_双11各大电商平台销售数据_百度seo有用吗
软件下载站网站源码免费_动画制作视频_双11各大电商平台销售数据_百度seo有用吗

记得return 0

输入输出

关闭同步流肯定会记得
但是要记得define endl '\n' 更重要

dfs和string传参的注意

题目链接

#include<bits/stdc++.h>
using namespace std;//#define int long long
using ll = long long;
using ar2 = array<int,2>;
using ar3 = array<int,3>;
using pii = pair<int,int>;
#define fi first
#define se second
#define endl '\n'
const int N=20,MOD=1e9+7;
int n,m;
unordered_set<string>st;
string s[N];
bool vis[N];bool check(string str){int x=str.size();return x>=3&&x<=16;
}void dfs(int cnt,string now){if(cnt==n){if(now.size()>=3&&now.size()<=16&&st.count(now)==0){cout<<now<<endl;exit(0);}return;}for(int i=1;i<=n;i++){if(vis[i]) continue;vis[i]=1;string und="_";while(now.size()+und.size()+s[i].size()>=3&&now.size()+und.size()+s[i].size()<=16){dfs(cnt+1,now+und+s[i]);und+='_';}vis[i]=0;}
}void solve(){cin>>n>>m;for(int i=1;i<=n;i++){cin>>s[i];}for(int i=0;i<m;i++){string t;cin>>t;st.insert(t);}for(int i=1;i<=n;i++){vis[i]=1;dfs(1,s[i]);vis[i]=0;}cout<<-1<<endl;
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T=1;
//	cin>>T;while(T--) solve();return 0;}

重点不在题目逻辑
看check函数

bool check(string str){int x=str.size();return x>=3&&x<=16;
}

不能写bool check(string &str)
因为dfs调用时 while(check(now+und+s[i]) 传入checkstring并不是一个变量 是一个临时的string没法引用
所以这样的函数不要用 传参会拷贝一份 效率变慢 会tle几个样例 只能麻烦一点每次都手写一个判断了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com