我终于搞完这题了
这应该是我第一个完成的normoal
原本想自己先试试看
直接暴力拆开来解
结果runtime error
我吐了
然后我听我同学跟看动物园的那个
才改成这样
哀
我流泪了
int eliminateMaximum(int* dist, int distSize, int* speed, int speedSize)
{
int day =0;
int mon = 0;
int kill=0;
int daymap[100000] = {};
//天数的怪物
for(int o = 0 ; o < distSize ; o++)
{
daymap[(dist[o]-1) / speed[o]] ++;
}
while(kill != distSize)
{
kill ++;
mon = mon + daymap[day];
if(kill < mon )
{
return kill;
}
day++;
}
return kill;
}
这是原本的写法
int eliminateMaximum(int* dist, int distSize, int* speed, int speedSize)
{
int i =0;
int kill=0;
int distnext[distSize] ;
//天数
for(int o = 0 ; o < distSize ; o++)
{
distnext[o] = (dist[o]-1) / speed[o];
}
while(1)
{
//杀光光就回传
if(kill == distSize)
{
return kill;
}
i = 0;
//指定下一轮最靠近的
for(int t = 0 ; t < distSize ; t++)
{
if(distnext[t] < distnext[i])
{
i = t;
}
}
//沙怪物
dist[i] = -999999;
distnext[i] = 9999999;
kill++;
//怪物走路
for(int k = 0 ; k < distSize ; k++)
{
if(dist[k] != -999999)
{
dist[k] = dist[k] - speed[k];
}
}
//走道主堡了没
for(int gg = 0 ; gg < distSize ; gg++)
{
if(dist[gg] != -999999 && dist[gg] <= 0)
{
return kill;
}
}
}
return kill;
}
我吐了