(NYoj 469)擅长排列的小明 II --简单地推规律,打表思想
2016-08-05 20:36
323 查看
擅长排列的小明 II
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
小明十分聪明,而且十分擅长排列计算。
有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5……n满足以下情况的排列:
1、第一个数必须是1
2、相邻两个数之差不大于2
你的任务是给出排列的种数。
输入
多组数据。每组数据中输入一个正整数n(n<=55).
输出
输出种数。
样例输入
4
样例输出
4
来源
Ural
上传者
李文鑫
分析:
拿到这一题我就在找d[i]和前面的d之间的关系,发现d[i]和d[i-1],d[i-3]有关系。但是却推不出大难那。“尴尬了。。”
后来为了节约时间我就直接想到了打表的方法。先用一个程序跑出所有的结果,然后在直接输出即可。
这是打表的代码:
其实在很多时候,特别是在比赛中,直接打表就好,在等待的过程中就直接去做下一题就好。
由于是深搜所以好一点时间,然后我就开始找规律了。
d[i]=d[i-1]+d[i-3]+1;
AC代码:
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
小明十分聪明,而且十分擅长排列计算。
有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5……n满足以下情况的排列:
1、第一个数必须是1
2、相邻两个数之差不大于2
你的任务是给出排列的种数。
输入
多组数据。每组数据中输入一个正整数n(n<=55).
输出
输出种数。
样例输入
4
样例输出
4
来源
Ural
上传者
李文鑫
分析:
拿到这一题我就在找d[i]和前面的d之间的关系,发现d[i]和d[i-1],d[i-3]有关系。但是却推不出大难那。“尴尬了。。”
后来为了节约时间我就直接想到了打表的方法。先用一个程序跑出所有的结果,然后在直接输出即可。
这是打表的代码:
//打表法 #include <iostream> #include <cstdio> #include <cstring> using namespace std; bool used[60]; int n,cnt; void dfs(int cur,int pre) { if(cur>n) { cnt++;return; } int i=pre-2,j=pre+2; for(i;i<=j && i<=n;i++) { if(i>=1 && !used[i]) { used[i]=true; dfs(cur+1,i); used[i]=false; } } } int main() { printf("1,"); for(n=2;n<=55;n++) { cnt=0; memset(used,false,sizeof(false)); used[1]=true; dfs(2,1); printf("%d,",cnt); } return 0; }
其实在很多时候,特别是在比赛中,直接打表就好,在等待的过程中就直接去做下一题就好。
由于是深搜所以好一点时间,然后我就开始找规律了。
d[i]=d[i-1]+d[i-3]+1;
AC代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int ans[60]; int main() { ans[0]=0;ans[1]=1;ans[2]=1;ans[3]=2;ans[4]=4; for(int i=5;i<=55;i++) ans[i]=ans[i-1]+ans[i-3]+1; int n; while(scanf("%d",&n)!=EOF) { printf("%d\n",ans ); } return 0; }
相关文章推荐
- nyoj469 擅长排列的小明 II
- NYOJ 469 擅长排列的小明 II
- NYOJ 469 擅长排列的小明 II
- NYOJ 469 擅长排列的小明 II
- nyoj-469--擅长排列的小明 II
- NYOJ 题目469擅长排列的小明 II(递推)
- NYOJ 469 擅长排列的小明 II
- NYOJ 469 擅长排列的小明 II
- nyoj 469 擅长排列的小明 II
- NYOJ_469_擅长排列的小明 II
- nyoj-469-擅长排列的小明II
- NYOJ 469 擅长排列的小明 II(基础dp)
- NYOJ 469 擅长排列的小明 II
- NYOJ 469 擅长排列的小明 II
- nyoj——469 擅长排列的小明 II
- 擅长排列的小明 II(nyoj 469)
- NYOJ 469 擅长排列的小明 II (dp问题)
- NYOJ 469 擅长排列的小明 II
- NYOJ 469 擅长排列的小明 II
- Nyoj 469 擅长排列的小明 II