游戏开发论坛

 找回密码
 立即注册
搜索
楼主: passiongame

一个并不复杂的问题,但是我想不出一个高效的算法

[复制链接]

8

主题

111

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2005-1-19 16:52:00 | 显示全部楼层

Re:一个并不复杂的问题,但是我想不出一个高效的算法

rand_inclusive(a,b)就是取a和b之间的随机数,包括a和b这两个边界值.

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2005-1-20 15:51:00 | 显示全部楼层

Re: Re:一个并不复杂的问题,但是我想不出一个高效的算

ixnehc: Re:一个并不复杂的问题,但是我想不出一个高效的算法,请各位达人都来看看!!!!

设有n个数,总和为total,则最大的值记为a[n],次大的值记为a[n-1],依次类推,最小的值记为a[1]

int a[n];
...


数据为什么能按大小顺序排列呢
我代入算了一下,大小顺序不定

8

主题

111

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2005-1-20 17:46:00 | 显示全部楼层

Re:一个并不复杂的问题,但是我想不出一个高效的算法

sorry,果然有bug(也许还有),漏了,应该这样:
int a[n];
int sum,limit;
sum=0;
limit=9;
for (i=n;i>1;i--)
{
    a=rand_inclusive((total-sum-1)/i+1,min(limit,total-sum-(i-1)));
    limit=a;
    sum+=a;
}
a[1]=total-sum;

后面的值应该用前面的值做上限.

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2005-1-21 11:26:00 | 显示全部楼层

Re:一个并不复杂的问题,但是我想不出一个高效的算法

这回好象差不多了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 03:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表