“盒子”新型问题求解过程及算法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
“盒子”新型问题求解过程及算法

题目描述有2个无限大的盒子。A个球在第1个盒子里,B个球在第2个盒子里(0 A + B 2147483648)。我们可以将一个盒子里的一些球移动到另一个盒子里,但移动球的数量必须跟所移动到的盒子里原有的球数量一样多。这就需要你来判断,是否有可能让所有的球都移动到其中一个盒子里。输入格式第1行一个正整数K,表示有K组数据(K=3)。接下来K行,每行2个整数A和B。输出格式输出包括K行。对于每组的数据,分别输出所需要将所有球都移动到一个盒子里所需要的步数,如果不能移动到同一个盒子里则输出-1。样例输入样例输出/RQNOJ_ProblemStatus.asp?PID=268三维状态图像试验代码:#include iostream#include vector#include set#include map#include string#include functional#include numeric#include algorithm#include math.h#include dequeusing namespace std;void Box(int n,vectorvectorlong long int kk){long long int aa,bb,max,k,num=0;setlong long int num_a;vectorvectorlong long int ::iterator pos=kk.begin();do{num=0;num_a.clear();aa=*(pos-begin());bb=*(++pos-begin());num_a.insert(aa);max=aabb ? aa:bb;while(aa bb){if(max==aa){aa=aa-bb;bb=2*bb;}else{bb=bb-aa;aa=2*aa;}max=aabb ? aa:bb;num++;k=num_a.size();num_a.insert(aa);if(num_a.size() == k){num=-1;break;}}coutnumendl;++pos;}while(pos != kk.end());}int main(){long long int n,t;vectorlong long int temp;vectorvectorlong long int kk;cinn;for(int i=0;in;i++){for(int j=0;j2;j++){cint;temp.push_back(t);}kk.push_back(temp);temp.clear();}Box(n,kk);return 0;}试验结果展示:

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档