码迷,mamicode.com
首页 > 其他好文 > 详细

Panasonic Programming Contest 2020 D - String Equivalence

时间:2020-07-12 22:14:56      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:open   hide   sync   spl   出现   tps   color   mod   ram   

题目链接:https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_d

题意:给定n 输出所有长度为n的 要求字符串, 要求的字符串是满足 所有 s[i]=s[j]时t[i]=t[j]  或者 s[i]!=s[j]时 t[i]!=t[j]时的最小的那个字符串

思路:这种直接for 不出来的 不是递归搜 就是状压枚举  这里的是 dfs 搜索 用string  来记录上一个是什么

刚开始第一个只能是a  有了a就可以有下一个b  以此类推 当 前面已经出现过这个字符时,后面一定可以使用

复杂度一定小于 n的阶乘   因为是这其中的子集

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 #define ull unsigned long long
 5 #define pb push_back
 6 const int maxn=2e5+10;
 7 const int mod=998244353;
 8 
 9 int n;
10 int f[15];
11 
12 void dfs(int cnt,string s)
13 {
14     if(cnt>n)
15     {
16         cout<<s<<\n;
17         return;
18     }
19     for(int i=1;i<=cnt;i++)
20     {
21         string ss=s;
22         if(f[i]==0)
23             continue;
24         ss+=char(a+i-1);
25         f[i+1]++;
26         dfs(cnt+1,ss);
27         f[i+1]--;
28     }
29 }
30 
31 int main()
32 {
33     ios::sync_with_stdio(false);
34     cin.tie(0);
35     cin>>n;
36     string a;
37     f[1]=1;
38     dfs(1,a);
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 }
View Code

 

Panasonic Programming Contest 2020 D - String Equivalence

标签:open   hide   sync   spl   出现   tps   color   mod   ram   

原文地址:https://www.cnblogs.com/winfor/p/13289985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!