poj 1484 Blowing Fuses
這道題不知道怎麼設置的,一直RE,網上發現大家也一樣,不過他們是沒有讓輸入結束就 break;的原因,我這是開始都輸入完畢才開始處理也不行。。。
不知道為什麼。。。改了一下 opt ,不用數組就A了。。。開始這個題目設置的有點bug。。。opt數組改大點,比如到1000,也A了
AC的代碼:
#include <stdio.h>
#include <string.h>
int main()
{
int devCon[25];
int opt;
int flag[25];
int n,m,c;
int i;
int max,sum;
int count=0;
while(scanf("%d%d%d",&n,&m,&c))
{
if(n==0 && m==0 && c==0)
return 0;
//init
memset(flag,0,sizeof(flag));
sum=0;
max=-1;
//sum=0,max=-1;
for(i=1;i<=n;i++)
scanf("%d",&devCon[i]);
for(i=1;i<=m;i++)
{
scanf("%d",&opt);
if(flag[opt]==0)
{
sum+=devCon[opt];
flag[opt]=1;
}
else
{
sum-=devCon[opt];
flag[opt]=0;
}
if(sum>max)
max=sum;
}
printf("Sequence %d\n",++count);
if(max<=c) //沒被燒
{
printf("Fuse was not blown.\n");
printf("Maximal power consumption was %d amperes.\n",max);
}
else //保險絲燒掉了
printf("Fuse was blown.\n");
printf("\n");
}
return 0;
}
AC代碼之二:
#include <iostream>
#include <string.h>
int devCon[25];
int opt[1000];
int flag[25];
int main()
{
int n,m,c;
int i;
int max,sum;
int count=0;
while(scanf("%d%d%d",&n,&m,&c))
{
if(n==0 && m==0 && c==0)
return 0;
//init
printf("Sequence %d\n",++count);
memset(flag,0,sizeof(flag));
sum=0;
max=-1;
//sum=0,max=-1;
//輸入
for(i=1;i<=n;i++)
scanf("%d",&devCon[i]);
for(i=1;i<=m;i++)
scanf("%d",&opt[i]);
//開始處理
for(i=1;i<=m;i++)
{
if(flag[opt[i]]==0)
{
sum+=devCon[opt[i]];
flag[opt[i]]=1;
}
else
{
sum-=devCon[opt[i]];
flag[opt[i]]=0;
}
if(sum>c)
break;
if(sum>max)
max=sum;
}
if(i>m) //沒被燒
{
printf("Fuse was not blown.\n");
printf("Maximal power consumption was %d amperes.\n",max);
}
else //保險絲燒掉了
printf("Fuse was blown.\n");
printf("\n");
}
return 0;
}
最後更新:2017-04-03 14:54:03