#29187: 請益(C語言)


NADPH39 (NADPH39)

學校 : 國立中興大學
編號 : 180361
來源 : [211.21.205.196]
最後登入時間 :
2022-02-12 11:41:45
a271. 彩色蘿蔔 -- 兔子 | From: [39.9.126.241] | 發表日期 : 2022-02-04 00:59

如下程式碼,

每次只要測試資料結果為bye,

之後的程式碼讀到那六個背景參數便直接輸出一個結果,也不等下一列的輸入,

希望有大神能幫忙Debug:

		
		case '3':
		return -z;
		
		case '4':
		neg--;
		return -w;
		
		default: {;}
	}
}


int check(int M)
{
	if(M>0)
	return 1;
	
	else
	{
		printf("bye~Rabbit\n");
		return 0;
	}
}
 
#29188: Re:請益(C語言)


NADPH39 (NADPH39)

學校 : 國立中興大學
編號 : 180361
來源 : [211.21.205.196]
最後登入時間 :
2022-02-12 11:41:45
a271. 彩色蘿蔔 -- 兔子 | From: [39.9.126.241] | 發表日期 : 2022-02-04 01:01

程式碼:

#include<stdio.h>
int neg;				 /* neg: 計算中毒次數  */
int x,y,z,w,n,m;		 /* ...: 所有所需變數  */

int situation(char);	 /* situation() : 查表 */
int check(int);			 /* check() : 檢查存活 */

int main()
{
	int N;
	scanf("%d",&N);
	
	char ch;
	int flag=1;
	int count=0;
	while(scanf("%d %d %d %d %d %d",&x,&y,&z,&w,&n,&m))
	{
		count++;
		flag=1;neg=0;
		scanf("%c",&ch);
		
		
		while(scanf("%c",&ch))		
		{
			if(ch==' ')
			continue;
			
			else if(ch=='\n')
			break;
			
			else if(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4')
			{
				if(neg==0)
				{
					m+=situation(ch);
					flag=check(m);
					
					if(flag==0)
					{	break;		}
					
				}
				
				else
				{
					m+=neg*n;
					flag=check(m);
					
					if(flag==0)
					{	break;		}
					
					////////////////////////////////////////////////////
					
					m+=situation(ch);
					flag=check(m);
					
					if(flag==0)
					{	break;		}
					
				}
		
			}
	
		}
		
		if(flag==1)
		printf("%dg\n",m);
		
		if(count==N)
		return 0;
	}

}

int situation(char X)
{
	switch(X)
	{
		case '0':
		return 0;
		
		case '1':
		return x;
		
		case '2':
		return y;
		
		case '3':
		return -z;
		
		case '4':
		neg--;
		return -w;
		
		default: {;}
	}
}


int check(int M)
{
	if(M>0)
	return 1;
	
	else
	{
		printf("bye~Rabbit\n");
		return 0;
	}
}

 

 
#29190: Re:請益(C語言)


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a271. 彩色蘿蔔 -- 兔子 | From: [39.8.36.109] | 發表日期 : 2022-02-04 09:06

程式碼:

					flag=check(m);
					
					if(flag==0)
					{	break;		}
					
	

 


因為你這裡break了,每筆測資第二行還沒輸入完,結果後面的數字變成下一筆測資的x, y, z, n, m

 
#29199: Re:請益(C語言)


NADPH39 (NADPH39)

學校 : 國立中興大學
編號 : 180361
來源 : [211.21.205.196]
最後登入時間 :
2022-02-12 11:41:45
a271. 彩色蘿蔔 -- 兔子 | From: [39.9.126.241] | 發表日期 : 2022-02-04 23:16

程式碼:

					flag=check(m);
					
					if(flag==0)
					{	break;		}
					
	

 


因為你這裡break了,每筆測資第二行還沒輸入完,結果後面的數字變成下一筆測資的x, y, z, n, m


感激不盡!

我先將break的部分刪去之後,

再利用cnt來計數死後測資筆數並以此限制列印bye的次數,就成功AC了,真的太感謝了!

(這是暴力解法,要花0.6秒才AC;但如果有機會能見識更佳的解法,我也願聞其詳,拜託各位大神了)

 

int check(int M)
{
	if(M>0)
	return 1;
	
	else
	{
		cnt++;
		
		if(cnt==1)
		printf("bye~Rabbit\n");
		
		return 0;
	}
}
 
 
ZeroJudge Forum