问题标题: 酷町堂:为什么我的1053编译没有过?

0
0
已解决
刘斐
刘斐
高级守护
高级守护
1053   最佳调度问题

题目描述 Description
假设有n个任务由k个可并行工作的机器完成。完成任务i需要的时间为ti。试设计一个算法找出完成这n个任务的最佳调度,使得完成全部任务的时间最早。 对任意给定的整数n和k,以及完成任务i需要的时间为ti,i=1~n。编程计算完成这n个任务的最佳调度。

输入描述 Input Description
第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。

输出描述 Output Description
计算出的完成全部任务的最早时间

样例输入 Sample Input
7  3
2  14  4  16  6  5  3

样例输出 Sample Output
17
#include<iostream>
using namespace std;
int n,k,minv=1000010,time[10010];
int jq[10010];
void dfs(int t,int s) {
    if(minv<=s) return;
    if(t>n)
    {
        if(minv>s)
        {
            minv=s;
        }
        return;
    }
    for(int i=1;i<=k;i++)
    {
        if(jq[i]+time[t]<minv)
        {
            jq[i]+=time[t];
            dfs(t+1,(s>jq[i]?s:jq[i]));
            jq[i]-=time[t];
        }   
    }
    return; 
}
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>time[i]; 
    }
    dfs(1,0);
    cout<<minv;
    return 0;
} 

请求各位大神帮帮忙!


0
已采纳
黄俊博
黄俊博
资深光能
资深光能

刘斐,time是C++关键字,我也被坑过,改成time1试试看。

望采纳,谢谢。

黄俊博在2018-01-30 20:28:42追加了内容

但你的程序7,8,10超时,所以要剪枝,就是,如果当前值已经大于最优解,就不需要执行了。。

黄俊博在2018-01-31 08:32:04追加了内容

就是,如果当前值已经大于最优解,就不需要执行了。。

0
李牧晓
李牧晓
中级天翼
中级天翼

编译错误,变量名改一下

0
李牧晓
李牧晓
中级天翼
中级天翼

编译错误,变量名改一下

0
0
栾峻岩
栾峻岩
初级天翼
初级天翼

你要在输入后从大到小排序。这样就不会超时。把time换成time1,time我也错过。

我要回答