| ||||||||||
| 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 | |||||||||
求大牛看看我哪里错了 为什么wa?#include<iostream>
#include<algorithm>
using namespace std;
int stamp[26];
int req;
int l;
int ans[4],temp[4],p[4];//p[i]存temp[i]的类型
int astep,adif;//astep ans的长度,adif 是ans里邮票 的类型数
bool found,tie;
int cmpans(int *a,int la,int *b,int lb){//比较两个 结果的优劣。
int i,j;
for(i=la,j=lb;i>=0&&j>=0;i--,j--)
{
if(a[i]<b[j])return -1;
if(a[i]>b[j])return 1;
}
if(i>0)return -1;
if(j>0)return 1;
return 0;
}
bool dfs(int r,int step,int pos,int dif)//r 当前剩余钱,step 当前邮票数目,
//pos邮票类型位置,dif 邮票类型数
{
if(step>4)return false;
if(r==0){
if(!found){
memcpy(ans,temp,sizeof(ans));
astep=step;
adif=dif;
found=true;
tie=false;
}
else{
if(dif<adif)return true;
if(dif>adif)
{
memcpy(ans,temp,sizeof(ans));
astep=step;
adif=dif;
tie=false;
return true;
}
if(cmpans(ans,astep-1,temp,step-1)==0)
{
tie=true;
return true;
}
if(cmpans(ans,astep-1,temp,step-1)>0){
return true;
}
memcpy(ans,temp,sizeof(ans));
astep=step;
tie=false;
return true;
}
}
bool ret=false;
if(pos+1<l){
if(dfs(r,step,pos+1,dif))ret=true;
}
if(r>=stamp[pos])
{
if(step>=1)
{
if(pos==p[step-1])
{
temp[step]=stamp[pos];
p[step]=pos;
if(dfs(r-stamp[pos],step+1,pos,dif))ret=true;
}
else
{
temp[step]=stamp[pos];
p[step]=pos;
if(dfs(r-stamp[pos],step+1,pos,dif+1))ret=true;
}
}
else {
temp[step]=stamp[pos];
p[step]=pos;
if(dfs(r-stamp[pos],step+1,pos,dif+1))ret=true;
}
}
return ret;
}
void display(){
if(!found){
printf("%d ---- none\n",req);
return;
}
if(tie){
printf("%d (%d): tie\n",req,adif);
return ;
}
printf("%d (%d):",req,adif);
for(int i=0;i<astep;i++)
{
printf(" %d",ans[i]);
}
printf("\n");
}
int main()
{
while(scanf("%d",&stamp[l=0])==1)
{
while(stamp[l]!=0)
{
scanf("%d",&stamp[++l]);
}
sort(stamp,stamp+l);
while(scanf("%d",&req)==1&&req){
found=false;
dfs(req,0,0,0);
display();
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator