插花问题”的动态规划法算法

[复制链接]
查看11 | 回复0 | 2010-11-9 10:49:44 | 显示全部楼层 |阅读模式
#define F 100
#define V 100
/**//*
插花问题描述:

将f束鲜花插入v个花瓶中,使达到最徍的视觉效果,
问题相关约定及插花要求:

鲜花被编号为1--f,花瓶被编号为1--v,花瓶按从小到
大顺序排列,一只花瓶只能插一支花,鲜花i插入花瓶j中的
视觉效果效果值已知,编号小的鲜花所放入的花瓶编号也小
问题求解思路:

花瓶j(1 (B) ? (A)

B))//求取两数的最大值宏定义
#define F 100
//鲜花数最大值常量定义
#define V 100
//花瓶数最大值常量定义
//“插花问题”的初始化函数
//intf,v:鲜花数量,花瓶个数
//intp[][v]:鲜花i插入花瓶j的好看程度
void Flower_Initialize(int *f,int *v,int p[][V])
...{
int i,j;
printf("输入鲜花数量及花瓶个数:&quot

;
scanf("%d%d",f,v);
printf("顺序输入各鲜花插入各花瓶的好看程度: &quot

;
for(i=1;i 0;i--)
...{
while(q[i-1][newv-1]+p[newv] < q[newv])

newv--;
//确定鲜花i插在花瓶newv中,并准备考虑前一只花瓶
way = newv--;
}
return(q[f][v]);
}
//测试“插花问题”的动态规划法函数
voidRun_Ikebana()
...{
//循环计数器,鲜花数量,花瓶个数,鲜花i插入花瓶j的好看程度,鲜花插入花瓶的插入方法结果
inti,f,v,p[F][V],way[F];
Flower_Initialize(&f,&v,p);
printf("最大好看程度点数为%d ",Ikebana(p,f,v,way));
printf("插有鲜花的花瓶是: &quot

;
for(i = 1;i <= f;i++)
printf("%4d",way);
}
//:============================“插花问题”的动态规划法算法============================
int main(int argc, char* argv[])
...{
//Run_SubString();
Run_Ikebana();
printf(" 应用程序运行结束! &quot

;
return 0;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行