Advertisement
SuitNdtie

Cutting Stick

May 15th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.72 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int Aim[70];
  4.  
  5. int min(int a,int b){
  6.     return (a < b ? a : b);
  7. }
  8.  
  9. int dp[70][70];
  10.  
  11. int cutting(int l,int r){
  12.     if(r - l == 1){
  13.         return 0;
  14.     }
  15.     if(dp[l][r] != -1)return dp[l][r];
  16.     int ans = 1e9;
  17.     for(int m = l + 1 ; m < r ; m ++){
  18.         ans = min(ans,cutting(l,m) + cutting(m,r) + Aim[r] - Aim[l]);
  19.     }
  20.     return dp[l][r] = ans;
  21. }
  22.  
  23. int main()
  24. {
  25.     int len;
  26.     do{
  27.         scanf("%d",&len);
  28.         if(len == 0)continue;
  29.         for(int i = 0 ; i < 70 ; i ++)for(int j = 0 ; j < 70 ; j ++)dp[i][j] = -1;
  30.         int n;
  31.         scanf("%d",&n);
  32.         Aim[0] = 0;
  33.         Aim[n+1] = len;
  34.         for(int i = 1 ; i <= n ; i ++){
  35.             scanf("%d",&Aim[i]);
  36.         }
  37.         printf("The minimum cutting is %d.\n",cutting(0,n+1));
  38.        
  39.     }while(len != 0);
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement