社区
Java SE
帖子详情
技术难题 高手请进
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
打赏
收藏
技术难题 高手请进
现有一个技术难题请教各位高手 给你两个数,按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局). 请不要用嵌套循环来解决.最好用一个公式之类的算出.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
破解嵌入式软件质量难题:C/C++代码静态分析技术
保证交付的产品稳定、可靠、安全是嵌入式设备开发企业的始终追求,其中涉及到诸如研发流程、周期、成本、认证等制约,如何在有限条件下,破解嵌入式软件质量的难题是软件开发与测试团队必须应对的挑战。 本课程将以C...
LabVIEW编程技术邪派
高手
之「速成指引」
该《学习速成指引》是希望通过一个网络在线、持续迭代更新的总纲型层次等级指引,便于存放自己从外网搬运回来的知识砖头,从而渐进有序地进行相关资料的收集、分类和汇总,指引和辅助自己的学习笔记输出,且形成知乎...
顶级技术
高手
在何处
引言计算机技术是一个工程工作,而非一个科学工作,这导致计算机技术天然上限也不太高。当新晋IT人指望着靠学技术实现薪资翻倍时,中高层IT男却默默接受了各种技术瓶颈论和职场无用论。大家觉得...
什么叫人工智能技术
什么叫人工智能技术技术性专业性 人工智能技术技术性专业性(ArtificialIntelligence),英文简写为AI。它是科学研究、开发设计用以仿真模拟、拓宽和拓展人的智能化的基本知识、方式、专业能力及系统的一门新的...
大型网站技术架构
功能性需求也许还有“人月神话”聊以自慰,通过增加人手解决问题,而非功能需求大多是实实在在的
技术难题
,无论有多少工程师,做不到就是做不到。“好的设计绝对不是模仿、不是生搬硬套某个模式,而是在对问
Java SE
62,615
社区成员
307,318
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章