cf NEERC 14 J - Jokewithpermutation
来源:互联网 发布:小米电视怎么设置网络 编辑:程序博客网 时间:2024/06/05 00:44
J - Jokewithpermutation
题意为输入一串数字字符,为1~n的数字,目的就是将这1~n的数字输出,数字之间加空格
由于数字最多有50个,因此数字最大是两位数
首先用公式求出n,只存在一位数时 length=s.length(字符串长度)
用公式 length=9 存在两位数时 length1=length+(n-length)*2
类推有三位数为length2=length1+(n-length1)*3;
然后从大到小枚举每个数用dfs深搜找到适合的数标记一下
#include <cstdio>#include <cstring>char str[550];int num[550];int vis[550];bool flag=false;int n,len;void dfs(int x){ int i; if(x==0){ flag=true; return; } if(flag==true) return; if(x>9){ //找两位数的时候 for(i=1;i<len;i++){ int x1=x/10; int x2=x%10; //分别比较 if(vis[i]==0&&vis[i+1]==0) if(x1==num[i]&&x2==num[i+1]){ vis[i]=x; vis[i+1]=x; dfs(x-1); //条件符合进行递归 if(flag==true) return; vis[i]=0; //条件不符合回溯,取消标记 vis[i+1]=0; } } } else{ //一位数 for(i=1;i<=len;i++) if(vis[i]==0&&x==num[i]){ vis[i]=x; dfs(x-1); if(flag==true) return; vis[i]=0; } }} int main(){ freopen("joke.in","r",stdin); freopen("joke.out","w",stdout); scanf("%s",str+1); flag=false; memset(vis,-1,sizeof(vis)); memset(num,-1,sizeof num); len=strlen(str+1); for(int i=1;i<=len;i++){ num[i]=str[i]-'0'; vis[i]=0; } if(len<=9){ //只有个位数直接输出 printf("%d",num[1]); for(int i=2;i<=len;i++) printf(" %d",num[i]); puts(""); } else{ n=(len-9)/2+9; // printf("%d\n",n); dfs(n); for(int i=2;i<=len+1;i++){ //输出 if(vis[i-1]==vis[i]){ if(i>2) printf(" "); printf("%d%d",num[i-1],num[i]); i++; } else{ if(i==2) printf("%d",num[i-1]); else{ printf(" %d",num[i-1]); } } } puts(""); } return 0;}
0 0
- cf NEERC 14 J - Jokewithpermutation
- Cleaner Robot(CF 589J)
- CF-589J Cleaner Robot
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J Bottles
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J dp
- [物理 杂题] Codeforces Gym 101190 NEERC 16 J. Jenga Boom
- Codeforces Gym 101190 (NEERC 2016) J. Jenga Boom
- 2007-2008 ACM-ICPC, NEERC, Southern Subregional Contest J
- J-- DZY Loves Sequences(CF-447C
- Codeforces 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest J题(BFS)
- CodeForces 589J ——2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest
- 2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest Problem J 【二分+DP+单调队列】
- Codeforces 730 J. Bottles DP 0-1背包- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J.Bottles(背包,好题)
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J Bottle动态规划
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest - J. Bottles(DP)
- 2016-2017 ACM-ICPC, NEERC, Central Subregional Contest J.Architect of Your Own Fortune
- ACM ICPC 2011–2012, NEERC, Northern Subregional Contest J. John’s Inversions(合并排序求逆序数对数)
- 为什么河文档是黑人,而小河看起来却是个白人
- UItableView性能优化
- gcc __attribute__关键字举例之visibility
- UNIX入职理解
- 算法导论 第四章:分治法(一)
- cf NEERC 14 J - Jokewithpermutation
- 自定义列表选择Dialog,适用网络请求数据
- 多层级的makefile编写——递归调用makefile
- Linux命令echo -e -n
- 表达式求值难度3
- Java面试题全集(上)
- PHP unset销毁变量并释放内存
- iOS设计模式——Category
- android raw与assets区别