大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。
#include <iostream> using namespace std; int max(int a,int b) { if(a>=b)return a; else return b; } int cut_rod(int *p,int n) { int q=NULL; if(n==0)return 0; else for(int i=0;i<n;i++) { q=max(q,p[i]+cut_rod(p,n-1-i)); } return q; } int main() { int p[]={1,5,8,9,10,17,17,20,24,30}; int n; cout<<"Please input a int number"<<endl; cin>>n; int r=cut_rod(p,n); cout<<r<<endl; return 0; }
这版代码 由于p[]的原因,仅仅能对1~10求解。
所以对他进行小小的改进
第二版
#include <iostream> using namespace std; #define NIL (-0x7fffffff-1) int max(int a,int b) { if(a>=b) return a; else return b; } int cut_rod(int *p,int n) { if(n==0) return 0; int q=NIL; if(n<=10){ for(int i=0;i<n;i++) { q=max(q,p[i]+cut_rod(p,n-1-i)); } return q; }else if(n>10){ int b=n/10; n=n-b*10; if(n==0) q=0; for(int i=0;i<n;i++) { q=max(q,p[i]+cut_rod(p,n-1-i)); } return q+b*30; } } int main() { int p[]={1,5,8,9,10,17,17,20,24,30}; int n; cout<<"Please input a int number"<<endl; cin>>n; int r=cut_rod(p,n); cout<<r<<endl; return 0; }
这些是动态编程——简单的分割问题的解决方案钢棒
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117873.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...