水题一遍A,不过要注意一下每个同学临睡前的情况,根据样例就能知道,好好研究样例即可。
#include<stdio.h>
#include<string.h>int a[15][10],n;
int b[20];
int main()
{
int T=1,i,j;
while(scanf("%d",&n)!=EOF&&n)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0;i<n;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++){
if(a[i][2]>a[i][0])
b[i]=0;
else
b[i]=1;
}
int maxn=1,ans=0;
while(maxn<3000){
ans=1;
for(i=0;i<n;i++)
if(b[i]==0)
ans=0;
if(ans==1)
break;
for(i=0;i<n;i++){
if(a[i][2]==a[i][0]){
int d=0,c=0,ens=1;
for(j=0;j<n;j++){
if(b[j]==0)
d++;
else c++;
}
if(d<=c){
a[i][3]=1;
}
else
a[i][3]=3;
}
if(a[i][2]==a[i][0]+a[i][1]){
a[i][3]=2;
}
}
for(i=0;i<n;i++){
if(a[i][3]==1){
a[i][3]=0;
a[i][2]=0;
b[i]=1;
}
else if(a[i][3]==2){
a[i][3]=0;
a[i][2]=0;
b[i]=1;
}
else if(a[i][3]==3)
b[i]=0;
a[i][2]++;
}
maxn++;
}
printf("Case %d: ",T++);
if(ans!=1)
printf("%d\n",-1);
else
printf("%d\n",maxn);
}
return 0;
}
解决特定水题的算法策略
本文探讨了一种解决特定水题的算法方法,通过详细分析样例并应用逻辑判断来优化解决方案。程序通过循环输入数据,计算每名学生的情况,并最终确定最优解。文章深入解析了算法的核心步骤,包括数据初始化、逻辑判断、迭代优化等,旨在提供一种通用的求解策略。
2144

被折叠的 条评论
为什么被折叠?



