鱼C论坛

 找回密码
 立即注册
查看: 799|回复: 13

[已解决]请问这个穷举法作业怎么做

[复制链接]
发表于 2020-4-17 10:32:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一根长度为235m的材料,需要截成长度为19m和23m的短料,编程设计最佳截取方案,即求两种短料各截成多少根时,剩余的材料最少?(方案可能有多种,能列举一种即可。)
最佳答案
2020-4-17 11:28:27
a=235//19
c=235
for i in range(1,a+1):
    b=(235-i*19)//23
    if c>(235-i*19-b*23):
        c=235-i*19-b*23
        d=(i,b,c)
print(d)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-17 10:34:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 10:35:15 | 显示全部楼层

你这链的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 10:39:42 | 显示全部楼层
#include <stdio.h>
int main()
{

        int a = 235;
        int x,y;    //表示19m有x段 23米有y段
        int z[100]; 
        z[0]=235;   
    int i=1;
   
        int x_min = 0;
        int y_min = 0;
        int z_min = 0;

for(x=0;x<=7;x++)
        {
                for(y=0;y<=5;y++)
                {

                        z[i]=133-x*19-y*23;
                        if( z[i]>=0 && z[i]<z[i-1])
                        {
                                x_min = x;
                                y_min = y;
                                z_min = z[i];
                        }
                        i=i+1;
                }
        }
        printf("%d %d %d \n",x_min,y_min,z_min); 
        return 0;
}

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
_2_ + 1 + 1 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 10:43:11 | 显示全部楼层

请问可以用python实现吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 10:57:24 From FishC Mobile | 显示全部楼层
Hello. 发表于 2020-4-17 10:39

你可能走错片场了……
但你还是很厉害……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 10:59:34 From FishC Mobile | 显示全部楼层
kllly 发表于 2020-4-17 10:43
请问可以用python实现吗

我觉得你这个题目就有问题
一边说「怎样剩余长度最短」,一边说「情况很多,列举一种即可」
最短的情况就只有一种啊……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 11:04:12 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-4-17 11:27 编辑
def func(line: int, x: int, y: int) -> int:
    if x < y:
        raise ValueError("'x' must bigger than 'y' or equivalent to 'y'.")
    return line % (x + y)
    return line % x if (x > y) and (line % x) < y else (line % x) + (line % x % y)
    #这可能不是最妥当的情况
    #其他的我再想想……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 11:04:18 | 显示全部楼层
_2_ 发表于 2020-4-17 10:59
我觉得你这个题目就有问题
一边说「怎样剩余长度最短」,一边说「情况很多,列举一种即可」
最短的情况 ...

样例输出是5 6 2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 11:04:53 From FishC Mobile | 显示全部楼层
kllly 发表于 2020-4-17 11:04
样例输出是5 6 2

?什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 11:14:35 From FishC Mobile | 显示全部楼层
kllly 发表于 2020-4-17 11:04
样例输出是5 6 2


你看看这个行不行
line % x if (x > y) and (line % x < y) else (line % x) + (line % x % y)
Screenshot_20200417_111330_com.forchange.pythonclass.jpg
已经是最简了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 11:21:57 | 显示全部楼层
# coding=utf-8
"""
Author:song
"""
all=[]
bb=300
for i in range(0,13):
    for j in range((235-(19*i))//23+1):
        left=(235-(19*i)-(23*j))
        if left<bb:
            bb=left
            print("19米的{}根,23米的{}根,剩余{}米".format(i,j,bb))
得出来19米的5根,23米的6根,剩余2米
不知道对不对,有大佬的欢迎指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 11:28:27 | 显示全部楼层    本楼为最佳答案   
a=235//19
c=235
for i in range(1,a+1):
    b=(235-i*19)//23
    if c>(235-i*19-b*23):
        c=235-i*19-b*23
        d=(i,b,c)
print(d)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 12:14:02 | 显示全部楼层
#coding=gbk
def func(line:int,ln1:int,ln2:int):
    y1 = line%ln1
    y2 = line%ln2
    f = lambda x,y: x if x>y else y
    num = f(y1,y2)
    ys = []
    for i in range(num):
        for j in range(i):
            s = line - i*ln1 - j*ln2
            if s >= 0:
                dict1 = {'剩余长度':s,'截取方法':'%d-%d*%d-%d*%d' % (line,i,ln1,j,ln2)}
                ls1 = [s,dict1]
                ys.append(ls1)
    ys.sort()
    return ys[0][1]
f = func(235,19,23)
print(f)


结果:
{'剩余长度': 6, '截取方法': '235-6*19-5*23'}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 14:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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