是这样的
我在其他语言上有一道题目要转换成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;
}
|