Dynamic Programming?
来源:互联网 发布:数据加密芯片 编辑:程序博客网 时间:2024/05/22 11:50
Description
Dynamic Programming, short for DP, is the favorite of iSea. It is a method for solving complex problems by breaking them down into simpler sub-problems. It is applicable to problems exhibiting the properties of overlapping sub-problems which are only slightly smaller and optimal substructure.
Ok, here is the problem. Given an array with N integers, find a continuous subsequence whose sum’s absolute value is the smallest. Very typical DP problem, right?
Ok, here is the problem. Given an array with N integers, find a continuous subsequence whose sum’s absolute value is the smallest. Very typical DP problem, right?
Input
The first line contains a single integer T, indicating the number of test cases.
Each test case includes an integer N. Then a line with N integers Ai follows.
Technical Specification
1. 1 <= T <= 100
2. 1 <= N <= 1 000
3. -100 000 <= Ai <= 100 000
Each test case includes an integer N. Then a line with N integers Ai follows.
Technical Specification
1. 1 <= T <= 100
2. 1 <= N <= 1 000
3. -100 000 <= Ai <= 100 000
Output
For each test case, output the case number first, then the smallest absolute value of sum.
Sample Input
221 -141 2 1 -2
Sample Output
Case 1: 0Case 2: 1
题解:
把每一个数dp值赋初值为当前的值,每次向后加一位,最后选取最小值。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#define inf 9999999using namespace std;int dp[1005][1005];int e[1005];int main(){int T,k=0;cin >> T;while(T--){k++;int n;cin >> n;for(int i=1;i<=n;i++){scanf("%d",&e[i]);} memset(dp,inf,sizeof(dp)); for(int i=1;i<=n;i++){ dp[i][i]=e[i]; }for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){dp[i][j]=dp[i][j-1]+e[j];}}int mixn=99999999;for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){if(mixn>abs(dp[i][j]))mixn=abs(dp[i][j]);}}printf("Case %d: %d\n",k,mixn);}return 0;}
0 0
- dynamic programming
- Dynamic Programming
- Dynamic Programming
- dynamic programming
- Dynamic Programming
- dynamic programming
- Dynamic Programming
- Dynamic Programming
- Dynamic Programming
- Dynamic Programming
- Dynamic programming
- Dynamic Programming
- Dynamic Programming
- Dynamic Programming
- dynamic programming
- Dynamic Programming?
- Dynamic Programming
- Dynamic Programming
- hello world解析执行过程
- android 添加前景色
- Java GUI
- 入门训练 Fibonacci数列
- C++ 函数指针
- Dynamic Programming?
- golang编程之文件操作
- 自定义验证码
- Java生成和操作Excel文件
- hdu1301 kruskal+并查集
- CocoaPods 的安装和更新流程
- 沙特王子等2.5亿美元投资打车软件Lyft获5.3%股权
- linux环境下自动备份mysql
- android view的事件传递机制学习笔记