Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:GCC提交WA,C提交RE,我汗~~

Posted by vvandvv at 2010-10-01 21:53:07 on Problem 1100
In Reply To:GCC提交WA,C提交RE,我汗~~ Posted by:yzhw at 2009-03-22 16:52:51
> # include <stdio.h>
> # include <string.h>
> # include <stdlib.h>
> typedef struct
> {
> 	int p;
> 	char c;
> }sig;
> int total;
> int eq[100],len;
> __int64 cul(__int64 a,__int64 b,char c)
> {
> 	if(c=='+') return a+b;
> 	else if(c=='-') return a-b;
> 	else return a*b;
> }
> int chk()
> {
> 	sig stack2[50];
> 	__int64 stack1[50];
> 	int top1=-1,top2=-1,i,p=1;
> 	for(i=1;i<=len;i++)
> 	{
> 		if(eq[i]=='(') p++;
> 		else if(eq[i]==')')
> 		{
> 			p--;
> 			stack1[top1-1]=cul(stack1[top1-1],stack1[top1],stack2[top2].c);
> 			top1--;
> 			top2--;
> 		}
> 		else if(eq[i]=='-'||eq[i]=='+'||eq[i]=='*')
> 		{
> 			if(top2==-1||p>stack2[top2].p)
> 			{
> 				stack2[++top2].p=p;
> 				stack2[top2].c=(char)eq[i];
> 			}
> 			else
> 			{
> 				stack1[top1-1]=cul(stack1[top1-1],stack1[top1],stack2[top2].c);
> 		    	top1--;
> 		    	stack2[top2].c=(char)eq[i];
> 				stack2[top2].p=p;
> 			}
> 		}
> 		else stack1[++top1]=eq[i];
> 	}
> 	if(top1) stack1[top1-1]=cul(stack1[top1-1],stack1[top1],stack2[top2].c);
> 	if(stack1[0]==total) return 1;
> 	else return 0;
> }
> 
> int det(int num)
> {
>     if(num>len)
> 	{
> 		return chk();
> 	}
> 	else if(eq[num]!=' ') return det(num+1);
> 	else
> 	{
> 		eq[num]='+';
> 		if(det(num+1)) return 1;
> 		eq[num]='-';
> 		if(det(num+1)) return 1;
> 		eq[num]='*';
> 		if(det(num+1)) return 1;
> 		return 0;
> 	}
> }
> int main()
> {
> 	int casenum=1;
> 
> 	while(1)
> 	{
> 		char temp[1000],*t;
> 		int i;
> 		scanf("%d",&total);
> 		if(!total) break;
> 		scanf(" = ");
> 		gets(temp);
> 		printf("Equation #%d:\n",casenum++);
> 		len=0;
> 		t=strtok(temp," ");
> 		while(t!=NULL)
> 		{
> 			if(t[0]=='(')
> 			{
> 				eq[++len]='(';
> 				t=t+1;
> 			}
> 			eq[++len]=atoi(t);
> 			if(t[strlen(t)-1]==')')
> 			{
> 				eq[++len]=')';
> 				t[strlen(t)-1]='\0';
> 			}
> 			eq[++len]=' ';
> 			t=strtok(NULL," ");
> 		}
> 		len--;
> 		if(det(1)) 
> 		{
> 			printf("%d=",total);
> 			for(i=1;i<=len;i++)
> 			{
> 				if(eq[i]!='+'&&eq[i]!='-'&&eq[i]!='*'&&eq[i]!='('&&eq[i]!=')') printf("%d",eq[i]);
> 				else printf("%c",eq[i]);
> 			}
> 			printf("\n");
> 
> 		}
> 		else printf("Impossible\n");
> 		printf("\n");
> 	}
> }
> 


这种程序都能AC,POJ真是可以了,随便数个字串进去都是错了,竟然输出Impossible!

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator