TOJ 3348 Scales

举报
万猫学社 发表于 2021/05/29 13:49:27 2021/05/29
【摘要】 /***********************************Problem: TOJ 3348 ScalesTime: 0'00.00"Memory: 720KAccepted Time: 2009-08-04 19:39:53Tip: DP min(放左盘,放右盘,不放)************************************/#include ...

  
  1. /***********************************
  2. Problem: TOJ 3348 Scales
  3. Time: 0'00.00"
  4. Memory: 720K
  5. Accepted Time: 2009-08-04 19:39:53
  6. Tip: DP min(放左盘,放右盘,不放)
  7. ************************************/
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. int table[18]={1,3,9,27,81,243,729,2187,6561,19683,59049,177147,531441,1594323,4782969,14348907,43046721,129140163};
  11. int main()
  12. {
  13. int m;
  14. while(scanf("%d",&m)!=EOF)
  15. {
  16. int aa[30],bb[30],ca=0,cb=0,i;
  17. int dp[2];
  18. dp[0]=m;dp[1]=0;
  19. for(i=0;table[i]<m;i++);
  20. for(;i>=0;i--)
  21. {
  22. int a=dp[0],b=dp[1];
  23. if(abs(a-b)>abs(a-b-table[i]))
  24. {
  25. b+=table[i];
  26. if(abs(a-b)>abs(dp[0]+table[i]-dp[1]))
  27. {
  28. dp[0]+=table[i];
  29. aa[ca++]=table[i];
  30. }
  31. else
  32. {
  33. dp[1]+=table[i];
  34. bb[cb++]=table[i];
  35. }
  36. }
  37. else
  38. {
  39. if(abs(a-b)>abs(dp[0]+table[i]-dp[1]))
  40. {
  41. dp[0]+=table[i];
  42. aa[ca++]=table[i];
  43. }
  44. }
  45. if(dp[0]==dp[1])break;
  46. }
  47. printf("%d",ca);
  48. for(i=ca-1;i>=0;i--)printf(" %d",aa[i]);
  49. printf("/n");
  50. printf("%d",cb);
  51. for(i=cb-1;i>=0;i--)printf(" %d",bb[i]);
  52. printf("/n");
  53. }
  54. return 0;
  55. }

 

文章来源: blog.csdn.net,作者:万猫学社,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/heihaozi/article/details/4409009

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。