Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
why WA?#include <iostream.h> #include <string.h> int res[16]; int a[12][16]; int p; int check(int id) { int i=0,j,sign; while(id) { res[i++]=id%2;//求出该种策略中各种食物是否添加 id=id/2; } while(i<16) res[i++]=0; for(i=0;i<p;i++)//测试该种策略能否满足各客人的至少一项要求 { sign=0; for(j=0;j<16&&sign==0;j++) if(res[j]==a[i][j]||a[i][j]==2) sign=1;//该种策略满足了第i个客人一种要求 if(!sign) return 0; } return 1; } int main(int argc, char* argv[]) { char r[100],c; int i,id; while(cin>>r) { p=0;//客人数 for(i=0;i<16;i++) a[p][i]=-1;//表示该客人尚未对该食物未提出要求 for(i=1;i<strlen(r);i+=2) if(a[p][r[i]-65]==-1)//该客人尚未对该食物未提出要求 a[p][r[i]-65]=(r[i-1]=='+'?1:0); else//该客人对该食物已提出要求 { if(a[p][r[i]-65]==1&&r[i-1]=='+') a[p][r[i]-65]=1; else { if(a[p][r[i]-65]==0&&r[i-1]=='-') a[p][r[i]-65]=0; else a[p][r[i]-65]=2;//该种食物添加不添加均可以满足客人的一种要求 } } p=1; while(cin>>r) { if(r[0]=='.') break; for(i=0;i<16;i++) a[p][i]=-1; for(i=1;i<strlen(r);i+=2) if(a[p][r[i]-65]==-1)//该客人尚未对该食物未提出要求 a[p][r[i]-65]=(r[i-1]=='+'?1:0); else//该客人对该食物已提出要求 { if(a[p][r[i]-65]==1&&r[i-1]=='+') a[p][r[i]-65]=1; else { if(a[p][r[i]-65]==0&&r[i-1]=='-') a[p][r[i]-65]=0; else a[p][r[i]-65]=2;//该种食物添加不添加均可以满足客人的一种要求 } } p++; } id=0; while(id<=65535) { if(check(id))//检测第id种方法是否可行,将id转化为二进制,得到的各位为每种食物是否添加,0不添加,1添加 //例如id=3转化为0000000000000011表示只添加A,B break; id++; } if(id>65535) cout<<"No pizza can satisfy these requests."<<endl; else { if(!id) cout<<"Toppings: "; else { cout<<"Toppings: "; for(i=0;i<16;i++) if(res[i]) { c=i+65; cout<<c; } } cout<<endl; } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator