Re: [闲聊] 每日LeetCode

楼主: oin1104 (是oin的说)   2023-12-29 22:12:25
题目:
你有n个工作 跟d天
每天至少要做一个工作 没有上限 加班到死
要照顺序做
每天的工作难度是当天难度最大的工作的难度
问你怎么安排行程可以让你d天工作难度加起来最小
解法:
https://i.imgur.com/0jbL4k2.jpg
dpdpdpdpdpdpdpdpdpdp
第一天工作到哪里 难度会多大
第二天工作到哪里 难度加上第一天的难度会多大
第三天...
然后一直加到最后一天
的最后一格工作
就可以了
我好棒
int minDifficulty(int* jobDifficulty, int jobDifficultySize, int d)
{
int ans = 0;
int n = jobDifficultySize;
int map[d][n];
memset(map , 0 , sizeof(map));
if(n < d)
{
return -1;
}
if(n == d)
{
int haha = 0;
for(int i = 0 ; i < n ; i ++)
{
haha+=jobDifficulty[i];
}
return haha;
}
int find(int ln , int fn)
{
int maxii = 0 ;
for(int ii = ln ; ii <= fn ; ii++)
{
if(jobDifficulty[ii] > maxii)
{
maxii = jobDifficulty[ii];
}
}
return maxii;
}
int f = 0;
int l = 0;
int dnow = 1;
int fk = 0;
int max = 0;
for(int i = 0 ; i < d ; i++)
{
int minf = 0;
int min = 99999999;
for(int k = i ; k <= (n -d +i) ; k++ )
{
min = 99999999;
if(i == 0)
{
map[i][k] = find(i,k);
}
else if(i>0)
{
for(int j = i-1 ; j < k ; j ++)
{
if(map[i-1][j] + find(j+1,k) < min)
{
min = map[i-1][j] + find(j+1,k);
}
}
map[i][k] = min;
}
}
}
return map[d-1][n-1];
}
作者: JIWP (JIWP)   2023-12-29 22:13:00
好了啦,还不是别人教你的
楼主: oin1104 (是oin的说)   2023-12-29 22:14:00
我自己想到的虽然有提示 可是我还是我想到的不管 我很棒
作者: Che31128 (justjoke)   2023-12-29 22:15:00
你很棒
作者: JIWP (JIWP)   2023-12-29 22:15:00
= =

Links booklink

Contact Us: admin [ a t ] ucptt.com