两份代码哪里不一样?
  • 板块学术版
  • 楼主_Give_up_
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/10/5 16:18
  • 上次更新2023/10/27 08:40:45
查看原帖
两份代码哪里不一样?
516468
_Give_up_楼主2022/10/5 16:18
#include<bits/stdc++.h>
#define N 10010

using namespace std;

int a[N],k[N],t[N],dp[N];

int main()
{
	int hour1,minute1,hour2,minute2;
	scanf("%d:%d",&hour1,&minute1);
	scanf("%d:%d",&hour2,&minute2);
	hour1 = hour1*100+minute1;
	hour2 = hour2*100+minute2;
	int time=0;
	for (int i=hour1+1;i<=hour2;i++)
	{
		time++;
		if (i%100==60) i = (i/100+1)*100;
	}
	int n;
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
		scanf("%d%d%d",&t[i],&a[i],&k[i]);
	for (int i=1;i<=n;i++)
	{
		if (k[i]!=0)
		{
			for (int j=time;j>=t[i];j--)
			{
				if (k[i]==1) dp[j] = max(dp[j],dp[j-t[i]]+a[i]);
				else
				{
					for (int u=0;u<=k[i] && u*t[i]<=j;u++)
						dp[j]=max(dp[j],dp[j-u*t[i]]+u*a[i]);
				}
			}
		}
		else
		{
			for (int j=t[i];j<=time;j++)
				dp[j] = max(dp[j],dp[j-t[i]]+a[i]);
		}
	}
	cout << dp[time] << endl;
	return 0; 
}

上面的输出为 11

#include <bits/stdc++.h>
#include <cstdio>

using namespace std;

int t[10010], a[10010], k[10010], dp[10010];

int main()
{
	int hour1, minute1, hour2, minute2;
    scanf("%d:%d", &hour1, &minute1);
    scanf("%d:%d", &hour2, &minute2);
    hour1 = hour1*100+minute1;
    hour2 = hour2*100+minute2;
    int time = 0;
    for (int i=hour1+1;i<=hour2;i++) {
        time++;
        if (i%100==60) i=(i/100+1)*100;
    }
    int n;
    cin >> n;
    for(int i=1;i<=n;i++)
        cin >> t[i] >> a[i] >> k[i];
    for(int i=1;i<=n;i++)
    {
        if(k[i]!=0)
        {
            for(int j=time;j>=t[i];j--)
            {
                if(k[i]==1) dp[j] = max(dp[j], dp[j-t[i]]+a[i]);
                else
                {
                    for(int u=0;u<=k[i] && u*t[i]<=j;u++)
                        dp[j] = max(dp[j], dp[j-u*t[i]]+u*a[i]);
                }
            }
        }
        else
        {
            for(int j=t[i];j<=time;j++)
                dp[j]-max(dp[j], dp[j-t[i]]+a[i]);
        }
    }
    cout << dp[time] << endl;
	return 0;
}

这坨代码输出为 10

求问这两段代码哪里不一样?

2022/10/5 16:18
加载中...