找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1928|回复: 0

[求助] 我是一个新手,想学习下python,有没有大神花几分钟看一下

1

主题

1

帖子

1

积分

贫民

积分
1
zh819527932 发表于 2018-9-29 01:04:01 | 显示全部楼层 |阅读模式
是这样的
我在其他语言上有一道题目要转换成python
题目不难 但是但是 python 很多的语句我不熟悉,写的时候一堆错误..
这道题如果解决了 相信python 很多的基础我也就慢慢学会了,希望大神们做下,我做了一个下午才转换了一些

大神们估计几分钟就解决了,以下是题目和其他语言写的
某工厂有n个独立的作业,由m台相同的机器进行加工处理。作业i所需的加工时间为ti,任何作业在被处理时不能中断,也不能进行拆分处理。现厂长请你给他写一个程序:算出n个作业由m台机器加工处理的较短时间。

输入第一行T(1<T<100)表示有T组测试数据。每组测试数据的第一行分别是整数n,m(1<=n<=10000,1<=m<=100),接下来的一行是n个整数ti(1<=t<=100)。输出所需的较短时间。(提示:不一定是最优解)样例输入2 2 2 1 5 6 3 2 5 13 15 16 20样例输出5 28
#include <stdio.h>
int main()
{
    int t,n,m,ti[10000];
    scanf("%d",&t);
    while(t--)
    {
        int i,j,co[100]={0},max,k,min;
        scanf("%d%d",&n,&m);
        for(i=0;i<n;i++)
            scanf("%d",&ti);
        for(i=0;i<n;i++) //对时间进行从大到小的排序
        {
            for(k=i,max=ti,j=i;j<n;j++)
                if(ti[j]>max)
                {
                    max=ti[j];
                    k=j;
                }
            ti[k]=ti;
            ti=max;
        }
        if(n<=m) //当机器数目多时,直接输出最大时间,极为所需最少时间
        {
            printf("%d\n",ti[0]);
            continue;
        }
        else //机器数目少时
        {
            for(i=0;i<n;i++) //思路:总是把任务交给当前最空闲的机器
            {
                min=co[0];
                for(k=0,j=1;j<m;j++)
                    if(co[j]<min)
                    {
                        min=co[j];
                        k=j;
                    }
                co[k]+=ti;
            }            
        }
        max=co[0];
        for(i=1;i<m;i++)
            if(co>max)
                max=co;
        printf("%d\n",max);
    }
    return 0;
}
回复

使用道具 举报

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

本版积分规则

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