我使用了个比较原始的办法,用C语言写了写:
直接冒泡或者快速等任何排序方法对A[n]重新排序,到处都能找到代码直接抄就行,直接略过,下面默认是从小到大排序好的
int k为当前最小的存活机序号-1,初始为0,int score = 0;然后遍历
for(;0 == A;)
{
for(m=k;m<i;m++)
{
A[m]--;
if(1 == A[m])
{
Score++;
break;
}
}
if(m<i)
for(;m<i;m++){
A[m]--;
if(0 == A[m]) k++;
}
else
A[k]--;
}
printf("Zhe score is %d",&Score);
写完后觉得如果用链表应该还简单点,懒得改了