求一个算法!急
四种条件 a b c d
其中 a 在条件中占的地位最高,以此类推 b>c>d
也就是说 a最重要 也是主要的判断依据,但是 b c d也是 只是没有 a 那么高,这里面 d 最小,也是最不起作用的,但是d也可能成为可能的条件。
所以由 a b c d四个条件得出一个结果后。我再根据这个结果做事情!
提问 如何根据一种算法 由 a b c d 算出一个合理的值??
问题点数:50、回复次数:19Top
1 楼BrandyCao(IUnknown)回复于 2005-04-21 11:41:40 得分 5
result
if( a )
result = ...;
else if( b )
result = ...;
else if( c )
result = ...;
else if( d )
result = ...;
...Top
2 楼longlijun(风之力)回复于 2005-04-21 11:44:51 得分 5
好像楼上的就可以了Top
3 楼yst_killed(不会游泳的鱼)回复于 2005-04-21 12:10:14 得分 0
不是这样 我是想根据 a b c d 的值 算出一个值 根据算出来的值作为条件判断,问题是如何正确的算出这个值,比较合理的算出,又没有好的算法?Top
4 楼pcboyxhy(-273.15℃)回复于 2005-04-21 12:11:53 得分 5
abcd
1111 4位二进制数
根据数的大小判断就可以Top
5 楼L_BOY()回复于 2005-04-21 12:13:17 得分 5
用switch (expr)
{
case(a):do something;break;
case(b):do something;break;
case(c):do something;break;
case(d):do something;break;
};也行吧Top
6 楼zhongwei5695(威少求学C++)回复于 2005-04-21 12:23:58 得分 5
pcboyxhy(-273.15℃) 的算法比较好Top
7 楼yst_killed(不会游泳的鱼)回复于 2005-04-21 12:42:46 得分 0
首先声明以下 abcd四个数都是 0-1.0之间的数。Top
8 楼yst_killed(不会游泳的鱼)回复于 2005-04-21 12:44:56 得分 0
a b c d 四个数都有用 只是a的权值占60% b的25% c的10% d的占3% 这样 ,可见 d也是可能导致条件成立的一个原因。Top
9 楼ainibaobao(牛牛宝宝)回复于 2005-04-21 13:08:57 得分 5
pcboyxhy(-273.15℃) 的效率比较高,学习啊.Top
10 楼yst_killed(不会游泳的鱼)回复于 2005-04-21 13:39:38 得分 0
希望有别的算法Top
11 楼bing_huo(我是一个演员!)回复于 2005-04-21 13:44:01 得分 5
a b c d 四个数都有用 只是a的权值占60% b的25% c的10% d的占3% 这样 ,可见 d也是可能导致条件成立的一个原因。
这个百分比是什么意思? 要随机??
我的理解是程序中 1就是1 0就是0 怎么会有可能???Top
12 楼yst_killed(不会游泳的鱼)回复于 2005-04-21 13:51:49 得分 0
郁闷!看来是我问题问的不爽,大家都不明白。
不过还是谢谢 pcboyxhy(-273.15℃) 给我一定提示!Top
13 楼sunman1982(冥王星)回复于 2005-04-21 13:52:50 得分 0
不能理解楼主的 意思 难道还要牵扯到仿真学? 不好意思 能力之外了Top
14 楼Magicalfall(魔法的秋天)回复于 2005-04-21 14:21:08 得分 0
看了半天,还是没能理解楼主的题目意思。。。。Top
15 楼LianSir(小b)回复于 2005-04-21 16:56:00 得分 5
这跟数学建模中旅游最佳方案有点相似,根据a,b,c,d所占比例,再根据它在你心目中所占比例,二者相乘,根椐最后结果来确定选哪个方案。?Top
16 楼inlin()回复于 2005-04-21 17:09:32 得分 0
不怎么明白楼主问的问题Top
17 楼yst_killed(不会游泳的鱼)回复于 2005-04-25 09:54:50 得分 0
LianSir() ( ) 就是这个意思!Top
18 楼QunKangLi(心里面疼得有点发酸 一定是有雾来了 打湿了我的眼眶)回复于 2005-04-25 10:21:54 得分 5
if( a || b || c || d ) { .... } //按C的逻辑运算规则,如果条件a成立就不会去执行b,c,d的判断,b,c同样~~~
但要将a,b,c,d组合进一个数而不失原大小关系,可以:
int n = ((a!=0)<<3) | ((b!=0)<<2) | ((c!=0)<<1) | (d!=0) ;//结果为4位二进制数,从高到低依次是a,b,c,dTop
19 楼niuman(青橄榄)回复于 2005-04-25 10:34:04 得分 5
result=comp(a);
if(result==0) result=comp(b);
if(result==0) result=comp(c);
return result;Top




