- wsh 的博客
Day 12 总结
- @ 2024-7-25 17:30:31
作者附:本天为DFS专题 不予分类
T1小W选数字
总结
被题目坑了,输出时应在每个数后面输出两个空格,我是正常输出的(在每个数后面输出空格)没有认真仔细看题,以后要认真看题
思路
全排列模板题
附代码
#include<bits/stdc++.h>
using namespace std;
int n,r,x[110];
void dfs(int s,int w)
{
if(s==r){
for(int i=1;i<=r;i++){
cout<<" "<<x[i];
}
cout<<endl;
return;
}
for(int i=w;i<=n-(r-s)+1;i++){
x[s+1]=i;
dfs(s+1,i+1);
x[s+1]=0;
}
return;
}
int main()
{
freopen("xsz.in","r",stdin);
freopen("xsz.out","w",stdout);
cin>>n>>r;
dfs(0,1);
return 0;
}
T2小W玩接龙1
总结(自己)
理解错了题意 以为接完i龙后1~i-1就都不能接了,但实际不需要按顺序接
思路
每次dfs都可以接任意的单词(肯定要没被选过且能接),然后往下一层便利即可
附代码
#include<bits/stdc++.h>
using namespace std;
int n,ans;
char t[110],we[110],z[110];
void dfs(int s,int w)
{
ans=max(ans,s);
char j=we[w];
for(int i=2;i<=n;i++){
if(t[i]==j&&z[i]==0){
z[i]=1;
dfs(s+1,i);
z[i]=0;
}
}
return;
}
int main()
{
freopen("JL.in","r",stdin);
freopen("JL.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>t[i]>>we[i];
}
dfs(0,1);
cout<<ans+1;
return 0;
}