技术难题 高手请进

jingweicool 2006-12-18 06:24:08
现有一个技术难题请教各位高手

给你两个数,按8:4或4:8或6:6的比例进行组合(即左边的数+右边的数=12 为1局),请问怎样组合才能组合出最大的局数.
如:90:54这两个数,可以组合出(10个8:4,1个4:8,1个6:6共12局 或 9个8:4,3个6:6共12局).

请不要用嵌套循环来解决.最好用一个公式之类的算出.
...全文
344 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
jingweicool 2007-01-10
  • 打赏
  • 举报
回复
ding
jingweicool 2007-01-10
  • 打赏
  • 举报
回复
非常感谢csdn的高手
但是问题还是没有解决

用iseeiconquer(smallear)的方法
只能算出两个数的余数同时为0的情况(如:4和8 共1局,8和16共2局等)
不能算出任意一边余数不为零的情况(如:4和9 共1局,4和10 共1局,9和17 共2局)

zj234312 2007-01-09
  • 打赏
  • 举报
回复
for(a<=m/8,b<n<4,a-b=9)
{x=x+1}
最后的x就是你求证的数字
zj234312 2007-01-09
  • 打赏
  • 举报
回复
设两数为m,n
8:4 4:8 6:6分别为,a,b,c
a8+b4+c6=m
a4+b8+c6=n

将上面的数值带入的话
a-b=9的话就可以成立有一个小的条件是a<m/8=90/8=11 b<n/4=54/4=13
用一个for循环的因该很快的
iseeiconquer 2007-01-09
  • 打赏
  • 举报
回复
设这任意2个整数为a,和b即a:b. 并设其可以拆分为x个4:8,y个6:6,z个8:4.则可以得到:
4x+6y+8z=a
8x+6y+4z=b;
2式相加可以得到局数number :
x+y+z=(a+b)/12 (你这个局数无所谓最大,如果存在解,则就已经定了)
也把x看做定值,由上面方程组得到:
y=(2b-a)/6-2x,z=(a-b)/4+x;
这样你只要x从0循环到number就可以得到所有的解,而无须嵌套循环.代码如下:

//功能方法,判断一个浮点型数是否为正的整数(例如3.0是而3.2和-3.0都不是).
public static boolean isZhengInteger(float f){
int intf=(int)f;
Integer intObjf=Integer.valueOf(intf);
float temp=intObjf.floatValue();
if(temp==f && temp>=0){
return true;
}
return false;
}

//主要方法,最后结果保存在一个list里面,list里每一项形式为"xyz"形式,表示x个4:8,
//y个6:6,z个8:4.list的大小表示共有多少种拆分方法.
public static List<String> getResult(int a,int b){
float number=(a+b)/12;
if(!isZhengInteger(number)){
return null;
}
if(a<4 || b<4){
return null;
}
List<String> result=new ArrayList<String>();
float y,z;
for(int x=0;x<=number;x++){
y=(float)(2*b-a)/6-2*x;
z=(float)(a-b)/4+x;
if(isZhengInteger(y) && isZhengInteger(z)){
result.add(""+x+y+z);
}
}
return result;
}

shine333 2007-01-09
  • 打赏
  • 举报
回复
x = 4a + 6b + 8c;
y = 8a + 6b + 4c;
x + y = 12 (a + b + c)

我们要求的就是a + b + c,问题是11:14,1:12什么意思

jingweicool 2007-01-09
  • 打赏
  • 举报
回复

csdn的高手有谁能解决这个问题

给出任意两个数,按8:4或4:8或6:6进行拆分,每一个比例为1局,问怎样拆分才能拆分出最大局数.
如:90:54这两个数,可以拆分出(9个8:4,3个6:6 最大共拆分出12局).
再如:11:14 两个数,可以拆分出(1个4:8,1个6:6 最大共拆分出2局).
再如:1:12 两数,最大局数为0局.
良言相告 2006-12-18
  • 打赏
  • 举报
回复
不用求大值了。。两方程相加就可以求出来了

如果我的方程没列错的话
良言相告 2006-12-18
  • 打赏
  • 举报
回复
x+y+z = (90+54)/12 = 12
良言相告 2006-12-18
  • 打赏
  • 举报
回复
8x + 4y + 6z = 90
4x + 8y + 6z = 54

可转换成求该方程的整数解,最大的局数就是x+y+z的最大值
jingweicool 2006-12-18
  • 打赏
  • 举报
回复
zaiding
jingweicool 2006-12-18
  • 打赏
  • 举报
回复
ding
petit 2006-12-18
  • 打赏
  • 举报
回复
组合排列也不能一条公式表达完亚
jingweicool 2006-12-18
  • 打赏
  • 举报
回复
有哪位高手能解决这个问题?
jingweicool 2006-12-18
  • 打赏
  • 举报
回复
syoumei(砸楼上的窗户,往楼下丢臭鸡蛋) 的解释很正确



jingweicool 2006-12-18
  • 打赏
  • 举报
回复
可能我描述的不大清楚.

就是给出任意两个数,按8:4或4:8或6:6进行拆分,每一个比例为1局,问怎样拆分才能拆分出最大局数.
如:90:54这两个数,可以拆分出(9个8:4,3个6:6 最大共拆分出12局).
再如:11:14 两个数,可以拆分出(1个4:8,1个6:6 最大共拆分出2局).
syoumei 2006-12-18
  • 打赏
  • 举报
回复
我来解释下 嘎嘎。

90:54这两个数,可以组合出(10个8:4,1个4:8,1个6:6共12局 或 9个8:4,3个6:6共12局).
============================================================================
90=80+4+6
54=40+8+6
-----------
10 1 1 =12

jk88811 2006-12-18
  • 打赏
  • 举报
回复
倒, 我也没看懂。。。
jingweicool 2006-12-18
  • 打赏
  • 举报
回复
自己up一下
duoshanx 2006-12-18
  • 打赏
  • 举报
回复
帮你顶!
加载更多回复(1)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧