Joke with permutation 分类: ACM 2015-08-03 14:09 1
来源:互联网 发布:php开发网站兼容问题 编辑:程序博客网 时间:2024/06/01 10:26
Joke with permutation
Time Limit: 3000ms, Special Time Limit:7500ms, Memory Limit:65536KB
Total submit users: 87, Accepted users: 60
Problem 13341 : Special judge
Problem description
Joey had saved a permutation of integers from 1 to n in a text file. All the numbers were written as decimal numbers without leading spaces.
Then Joe made a practical joke on her: he removed all the spaces in the file.
Help Joey to restore the original permutation after the Joe’s joke!
Input
The input file contains a single line with a single string — the Joey’s permutation without spaces.
The Joey’s permutation had at least 1 and at most 50 numbers.
Output
Write a line to the output file with the restored permutation. Don’t forget the spaces!
If there are several possible original permutations, write any one of them.
Sample Input
4111109876532
Sample Output
4 1 11 10 9 8 7 6 5 3 2
Problem Source
NEERC 2014
题意是给出一个全排列的字符串,然后让你确定排列两个元素之间的空格位置。
先根据字符串的长度求出n是多大,然后用dfs搜索符合条件的排列。
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#define maxn 500using namespace std;int n,l,cnt;int flag[maxn];char str[maxn];int hash[maxn];bool ll; void dfs(int k)//k表示当前处理到哪个字符{ if(ll) return ; if(k>=n) { for(int i=0;i<n;i++) { printf("%c",str[i]) ; if(flag[i]&&i!=n-1) printf(" "); } //当K>n时,输出排列,return ll=1; return ; } if(!hash[str[k]-'0']&&(k+1>=n||str[k+1]!='0'))//一个字有两种组合,要么自己组成一个数,要么和后面的字符组成两位数,注意组合完之后, 字符串的第一个不能是零 { hash[str[k]-'0']=1; flag[k]=1; dfs(k+1); flag[k]=0;//整数不可取,回退 hash[str[k]-'0']=0; } if(!hash[(str[k]-'0')*10+str[k+1]-'0']&&((str[k]-'0')*10+(str[k+1]-'0'))<=cnt&&(str[k+2]!='0'||k+2>=n)) { hash[(str[k]-'0')*10+str[k+1]-'0']=1; flag[k+1]=1; dfs(k+2); flag[k+1]=0; hash[(str[k]-'0')*10+str[k+1]-'0']=0; } }int main(){ while(scanf("%s",str)!=EOF) { n=strlen(str); if(n<=9) { for(int i=0;i<n-1;i++) printf("%c ",str[i]); printf("%c\n",str[n-1]); continue; } int num=n-9; cnt=9+num/2; ll=0; memset(hash,0,sizeof(hash)); memset(flag,0,sizeof(flag)); dfs(0); printf("\n"); } return 0;}
版权声明:本文为博主原创文章,未经博主允许不得转载。
- Joke with permutation 分类: ACM 2015-08-03 14:09 1
- Joke with permutation
- Joke with permutation
- HNU Joke with permutation (深搜dfs)
- POJ2168 Joke with Turtles
- poj 2168 Joke with Turtles
- POJ 2168 Joke with Turtles
- POJ 2168 Joke with Turtles
- HNU Knockout Racing 分类: ACM 2015-08-03 13:35 1人
- 背包问题------ 分类: ACM 2015-08-03 20:57 1人阅读 评论(0
- Joke
- joke
- JOKE
- joke
- joke
- joke
- Joke
- joke?
- 二叉树的遍历 分类: 数据结构 2015-07-20 22:34 4人阅读 评论(0)
- Buildings 分类: ACM 多校 2015-07-23 22:09
- Delicious Apples(多校联合训练) 分类: ACM 多校 201
- Crazy Search(POJ1200) 分类: poj 2015-07-25 10:15 6
- HNU Knockout Racing 分类: ACM 2015-08-03 13:35 1人
- Joke with permutation 分类: ACM 2015-08-03 14:09 1
- Judging Troubles (multiset查找) 分类: ACM STL
- Cent Savings (DP) 分类: ACM dp 2015-08-0
- 背包问题------ 分类: ACM 2015-08-03 20:57 1人阅读 评论(0
- 最小生成树 克鲁斯卡尔(Kruskal)算法求最小生成树
- 优先队列实现哈弗曼最小权值
- 二维hash(Uva 12886)
- Concert Tour(Uvalive 6853)
- ACM数论中的常见的模板和结论