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