公司网站大全合肥做检查军大网站
2026/1/12 13:52:01 网站建设 项目流程
公司网站大全,合肥做检查军大网站,鄂州网站开发,公司网站没有备案是不是违法的P1019 [NOIP 2000 提高组] 单词接龙 https://www.luogu.com.cn/problem/P1019 来发题解的 首先看题目会觉得很简单#xff0c;但是要怎么用代码实现呢。 字符串这个东西本质其实和数组差不多#xff0c;只要我们掌握一些语法和函数 substr(x,y) 这是一个可以取出字符串…P1019 [NOIP 2000 提高组] 单词接龙https://www.luogu.com.cn/problem/P1019来发题解的首先看题目会觉得很简单但是要怎么用代码实现呢。字符串这个东西本质其实和数组差不多只要我们掌握一些语法和函数substr(x,y)这是一个可以取出字符串任意一个部分的函数第一个参数 x -- 代表要截字符串的起始位置第二个参数 y -- 代表要截字符串的长度比如 t string , t.substr(0,2) 就是 st还有一个用法比如 substr(4) 就是 ng //从位置4开始到结尾的子字符串//字符串默认是从0开始索引的有了这个函数这个题目就会简单很多接下来我们继续思考1.怎么找到对应相等的部分并接起来2.怎么递归要传递什么参数下去即怎么去dfs。----首先我们要先找到龙头即第一个字母的对应这样才会进行dfs这很简单我们只需一个for循环的判断即可。然后进行匹配当找到两个字符串相对应的两个部分就把加起来再进行dfs#includebits/stdc.h using namespace std; #define int long long #define endl \n const int N 39; int n,ans 0; char c; string ss[N]; int v[N] {0}; void dfs(string s){ int ank s.size(); ans max(ans,ank); for(int i 1 ; i n ; i){ if(v[i] 2) continue; //每个字符串最多只能被用一次 for(int j 1 ; j min(s.size(),ss[i].size()) ; j){ if(s.substr(s.size() - j) ss[i].substr(0,j)){ v[i] ; dfs(s ss[i].substr(j));//把后面不相等的部分给接上 v[i] --; } } } } void solve(){ cinn; for(int i 1 ; i n ; i) cinss[i]; cinc; for(int i 1 ; i n ; i){ if(ss[i][0] c){ v[i] ; dfs(ss[i]); v[i]--; // 回溯 } } coutans; } signed main() { ios::sync_with_stdio(0); cin.tie(0); int t 1; //cin t; while (t--) { solve(); } return 0; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询