【动态规划】Sicily1280 Permutation
来源:互联网 发布:学生沉迷网络图片 编辑:程序博客网 时间:2024/06/06 02:06
http://soj.sysu.edu.cn/show_problem.php?pid=1280
dp[i][j]表示已经填了i个数,剩余有j个数比填好的第i个数小。
转移:
dp[i + 1][k] += dp[i][j];
a[i] > a[i + 1] k: 0 to j - 1
a[i] < a[i + 1] k: j to n - i - 1
起始状态:dp[1][i] = 1 (i : 0 to n - 1)
最终结果:dp[n][0]
注意每次清空数组。
#include <cstdio>#include <iostream>#include <cstring>using namespace std;int n, p[105];long long f[105][105];int main(){ int a, b; while (scanf("%d", &n) && n) { memset(f, 0, sizeof(f)); scanf("%d", &a); for (int i = 1; i < n; ++ i) { scanf("%d", &b); p[i] = (a < b); a = b; } for (int i = 0; i < n; ++ i) f[1][i] = 1; for (int i = 1; i < n; ++ i) { for (int j = 0; j <= n - i; ++ j) { if (!p[i]) for (int k = 0; k <= j - 1; ++ k) { f[i + 1][k] += f[i][j]; } else for (int k = j; k <= n - i - 1; ++ k) { f[i + 1][k] += f[i][j]; } } } printf("%lld\n", f[n][0]); } return 0;}
0 0
- 【动态规划】Sicily1280 Permutation
- Permutation Descent Counts CSU 1968 (动态规划)
- UVALive 5971 (LA 5971) Permutation Counting 动态规划 (容斥原理超时)
- 动态规划!!!动态规划!!!
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 【数据结构】非线性结构---树(基本概念)
- Rocket学习小结
- java.lang.NoClassDefFoundError: net/bytebuddy/matcher/ElementMatchers org/objenesis/ObjenesisStd
- 矩阵求导公式【转】
- 每天一条linux---rcp命令【远程文件拷贝】
- 【动态规划】Sicily1280 Permutation
- 手机号归属地如何批量查询?
- Mybatis中配置控制台打印sql语句
- 第四章 变量、作用域和内存问题
- 【bzoj1096】仓库建设 斜率优化dp
- POJ 2566 Bound Found
- window.location 中包含的属性和方法
- 算法积累——K均值聚类(Kmeans)----MLlib(机器学习)分两种——监督学习,无监督学习。首先监督学习,类似普贝叶斯这样的分类算法。要求必须事先明确知道各个类别的信息,并且断言所有待分类项都
- Vim插件配置