Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- int Aim[70];
- int min(int a,int b){
- return (a < b ? a : b);
- }
- int dp[70][70];
- int cutting(int l,int r){
- if(r - l == 1){
- return 0;
- }
- if(dp[l][r] != -1)return dp[l][r];
- int ans = 1e9;
- for(int m = l + 1 ; m < r ; m ++){
- ans = min(ans,cutting(l,m) + cutting(m,r) + Aim[r] - Aim[l]);
- }
- return dp[l][r] = ans;
- }
- int main()
- {
- int len;
- do{
- scanf("%d",&len);
- if(len == 0)continue;
- for(int i = 0 ; i < 70 ; i ++)for(int j = 0 ; j < 70 ; j ++)dp[i][j] = -1;
- int n;
- scanf("%d",&n);
- Aim[0] = 0;
- Aim[n+1] = len;
- for(int i = 1 ; i <= n ; i ++){
- scanf("%d",&Aim[i]);
- }
- printf("The minimum cutting is %d.\n",cutting(0,n+1));
- }while(len != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement