閱讀384 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 事件CEvent的使用 .
  下一篇:go Ubuntu12.04 root用戶登錄設置