Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int dp[100][100],arr[10000+5];
- int dpcut(int suru,int sesh)
- {
- if(suru+1==sesh)
- {
- return dp[suru][sesh]=0;
- }
- else if(dp[suru][sesh]!=-1)
- {
- return dp[suru][sesh];
- }
- else
- {
- int mn=1e9,i;
- for(i=suru+1; i<sesh; i++)
- {
- mn=min(mn,(dpcut(suru,i)+dpcut(i,sesh)+arr[sesh]-arr[suru]));
- }
- return dp[suru][sesh]=(mn);
- }
- }
- int main()
- {
- int len,i,j,k,cut,res;
- while(cin>>len && len)
- {
- cin>>cut;
- arr[0]=0,arr[cut+1]=len;
- for(i=1; i<=cut; i++)
- cin>>arr[i];
- memset(dp,-1,sizeof(dp));
- res=dpcut(0,cut+1);
- cout<<"The minimum cutting is "<<res<<"."<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement