USACO Section 2.2 Runaround Numbers - 又一个枚举的思想
来源:互联网 发布:java 正则表达式 * 编辑:程序博客网 时间:2024/05/22 07:52
题目说的这种数长度最多为9,每位都不重复..并且没有0..所以如果事先枚举所有这些数再判断的话需要枚举的个数是9!=362880...才30多W~~果断先枚举出可能的所有情况~~就按题目要求的判断下~~枚举的同时就能保证是有序的~~所以后来的查找输出就从1开始找到第一个大于输入的数就ok了...
Program:
/* ID: zzyzzy12 LANG: C++ TASK: runround*/ #include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<queue>using namespace std; long long n,ans[1000001];int num,s[10],p;bool used[10],f[10]; bool ok(){ int i=1,k,j,num=p; memset(f,0,sizeof(f)); while (num--) { k=i; for (j=1;j<=s[i];j++) { k++; if (k==p+1) k=1; } if (f[k]) return false; f[k]=true; i=k; } return true;}void search(int n){ int i; if (n==p+1) { if (ok()) { ans[++num]=0; for (i=1;i<=p;i++) ans[num]=ans[num]*10+s[i]; } return; } for (i=1;i<=9;i++) if (!used[i]) { used[i]=true; s[n]=i; search(n+1); used[i]=false; } return; }int main(){ freopen("runround.in","r",stdin); freopen("runround.out","w",stdout); num=0; for (p=1;p<=9;p++) { memset(used,false,sizeof(used)); search(1); } cin>>n; int i; for (i=1;i<=n;i++) if (ans[i]>n) break; cout<<ans[i]<<endl; return 0; }
- USACO Section 2.2 Runaround Numbers - 又一个枚举的思想
- USACO-Section 2.2 Runaround Numbers (枚举)
- USACO section 2.2 Runaround Numbers
- USACO Section 2.2 Runaround Numbers
- USACO Section 2.2 Runaround Numbers
- USACO - 2.2 Runaround Numbers(枚举)
- Section 2.2 Runaround Numbers
- USACO-Runaround Numbers(枚举)
- USACO--2.2Runaround Numbers
- USACO 2.2 Runaround Numbers
- USACO 2.2 Runaround Numbers
- USACO 2.2Runaround Numbers
- USACO 2.2 Runaround Numbers
- USACO 2.2.3 Runaround Numbers(枚举+模拟)
- USACO-Section2.2 Runaround Numbers【暴力枚举】
- [USACO 2.2.3] Runaround Numbers
- USACO 2.2 Runaround Numbers (runround)
- USACO 2.2.3 Runaround Numbers
- Android ListView ListActivity PreferenceActivity背景变黑的问题
- fedora所有历史版本的下载地址
- 从struts2回到struts的学习--DynaActionForm(不用手写actionForm.java)
- 翻转字符句子中单词顺序
- 输出当前时间
- USACO Section 2.2 Runaround Numbers - 又一个枚举的思想
- R Graph Cookbook 代码(chapter5-10)
- ABAP 动态的实现任意表的ALV显示
- 动态内表及动态ALV显示
- da
- Android RSS解析步骤(sax)
- oracle10g AWR Report 分析(2)
- 改善PHP开发方式的5种方法
- C# WinForm程序退出的方法