正文

Kill the monster HDU26162009-07-19 05:38:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/1mi2/45361.html

分享到:

昨天的比赛题目,其实就是深搜,一个一个的枚举。。。。。 最多10个,就是9!次循环。不会超时!! #include<stdio.h>#include<limits.h>int A[11],M[11];int mark[11];int n;int cout=INT_MAX;void dfs(int ,int ,int);int main(){ int xue; int i; while(scanf("%d %d",&n,&xue)!=EOF) {   cout=INT_MAX;  for(i=1;i<=n;i++)  {   scanf("%d %d",&A[i],&M[i]);   mark[i]=0;    }  for(i=1;i<=n;i++)  {   mark[i]=1;   dfs(1,xue,i);   mark[i]=0;  }  if(cout==INT_MAX)   printf("-1\n");  else  printf("%d\n",cout); } return 0;}void dfs(int c,int xx,int i)//数量,血,第几块{ int j; int temp=xx; if(c>cout) return ; if(xx<=M[i])    {     xx=xx-2*A[i];    }  else xx=xx-A[i]; if(xx<=0) cout=c; else  {    for(j=1;j<=n;j++)  {   if(mark[j]==0)   {        mark[j]=1;    dfs(c+1,xx,j);    mark[j]=0;   }  } }}

阅读(1222) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册