于1 2 3 4 5 6 7 8 9将九个数字“+”要么“-”符号使得结果100,编程的所有组合。

注意:数字顺序不能改变

  1. <pre name="code" class="cpp">nclude <stdio.h>
  2. #include <iostream>
  3. #include <memory.h>
  4.  
  5. #define NUM 6561 //3^8:6561
  6. using namespace std;
  7. int mici(int x, int i) //求解x^i
  8. {
  9. int res = 1;
  10. for (; i>0; i--)
  11. {
  12. res *= x;
  13. }
  14. return (res);
  15. }
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19. int data[9];
  20. int index, level;
  21. int i, j, k=0;
  22. int pre_sign;
  23. int temp = 0;
  24. int sum = 0;
  25. int x = 2;
  26.  
  27. for (i=0; i<NUM; i++) //总共同拥有6561种可能
  28. {
  29. memset(data, 0, sizeof(int)*9); //清零
  30. index = i;
  31. for (level=9; level>1; level--) //有8处符号须要推断
  32. {
  33. pre_sign = index%3; //该空的符号,规定0:+,1:-。2:连接
  34. index = index/3; //往上一层(即上一个空)的位置
  35. switch(pre_sign)
  36. {
  37. case 0:
  38. if (temp == 0)
  39. {
  40. data[k] = level;
  41. }
  42. else
  43. {
  44. data[k] = temp;
  45. temp = 0;
  46. x = 2;
  47. }
  48. k++;
  49. break;
  50. case 1:
  51. if (temp == 0)
  52. {
  53. data[k] = 0 - level;
  54. }
  55. else
  56. {
  57. data[k] = 0 - temp;
  58. temp = 0;
  59. x = 2;
  60. }
  61. k++;
  62. break;
  63. case 2:
  64. if (temp == 0)
  65. {
  66. temp = level + (level-1)*10;
  67. }
  68. else
  69. {
  70. temp = temp + (level-1)*mici(10,x);
  71. x++;
  72. }
  73. break;
  74. default:
  75. break;
  76. }
  77. }
  78.  
  79. if (pre_sign == 2) //处理数字1
  80. {
  81. data[k] = temp;
  82. }
  83. else
  84. {
  85. data[k] = 1;
  86. }
  87. k = 0; //将这些变量复位非常重要。以免影响下一轮。
  88. temp = 0;
  89. x = 2;
  90.  
  91. for (j=0; data[j]!=0; j++) //求和
  92. {
  93. sum = sum + data[j];
  94. }
  95.  
  96. if (sum == 100)
  97. {
  98. for (j=j-1; j>=0; j--) //逆序输出,这样1在前面
  99. {
  100. if (data[j] >0)
  101. {
  102. cout<<"+"<<data[j];
  103. }
  104. else
  105. {
  106. cout<<data[j];
  107. }
  108. }
  109. cout<<" = "<<sum<</*"....."<<i<<*/endl; //i for test
  110. }
  111. sum = 0;
  112. }
  113. return(0);
  114. }

  1.  
  1. </pre><pre name="code" class="cpp">
  1. 这是我在网上无意间看到的,认为非常有意思,自己就在电脑上试了一下,100多行源码打了半个多小时。最后也还是出现了错误。最后在一个专业的学长的帮助下攻克了问题,原来是编译器的不同导致的。
  2.  
  3. 看来还得好好了解下不同编译器导致的不同问题啊。还有 凝视中尽管说有6561种可能,但不知道为什么最后仅仅出现了11种。有待加强改进啊
  1. 相信自己有朝一日可以自己写出此代码,继续加油!。。 酒吧 年青^0^

版权声明:本文博主原创文章。博客,未经同意不得转载。

C++编程有趣的标题1 于1~9填写的运算结果的中间符号等于100的更多相关文章

  1. php权威编程有趣部分

    1.isset empty如果遇到null,isset判断为false;empty 判断为trueisset(var1, var2,...) 可以判断多个变量 2.unsetunset可以取消之前定义 ...

  2. Java编程的逻辑 (4) - 整数的二进制表示与位运算

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  3. C语言编程学习:写的秒速计算四则混合运算项目

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  4. Java并发编程(08):Executor线程池框架

    本文源码:GitHub·点这里 || GitEE·点这里 一.Executor框架简介 1.基础简介 Executor系统中,将线程任务提交和任务执行进行了解耦的设计,Executor有各种功能强大的 ...

  5. 编程架构演化史:远古时代,从打孔卡(Punched Card)开始

    回想读书时记录到书本里的打孔纸带编程,到初学编程接触到的C语言高级编程,再到C++.Java面向对象语言产生:从面向过程系统设计 到面向对象系统设计:从三层结构到MVC.MVP.MVVM:从主机到虚拟 ...

  6. 转载:[转]如何学好3D游戏引擎编程

      [转]如何学好3D游戏引擎编程 Albert 本帖被 gamengines 从 游戏引擎(Game Engine) 此文为转载,但是值得一看. 此篇文章献给那些为了游戏编程不怕困难的热血青年,它的 ...

  7. C#函数式编程

    提起函数式编程,大家一定想到的是语法高度灵活和动态的LISP,Haskell这样古老的函数式语言,往近了说ruby,javascript,F#也是函数式编程的流行语言.然而自从.net支持了lambd ...

  8. Scalaz(54)- scalaz-stream: 函数式多线程编程模式-Free Streaming Programming Model

    长久以来,函数式编程模式都被认为是一种学术研究用或教学实验用的编程模式.直到近几年由于大数据和多核CPU的兴起造成了函数式编程模式在一些实际大型应用中的出现,这才逐渐改变了人们对函数式编程无用论的观点 ...

  9. 函数响应式编程(FRP)—基础概念篇

    原文出处:http://ios.jobbole.com/86815/. 一函数响应式编程 说到函数响应式编程,就不得不提到函数式编程,他们俩有什么关系呢?今天我们就详细的解析一下他们的关系. 现在下面 ...

随机推荐

  1. 黑马程序员:Java基础总结----静态代理模式&动态代理

    黑马程序员:Java基础总结 静态代理模式&动态代理   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public  class  Ts {   ...

  2. 在navigationItem中添加搜索栏

    给navigationItem中添加个搜索栏,效果和大部分程序一样.代码如下: UISearchBar *searchBar = [[UISearchBaralloc] initWithFrame:C ...

  3. android画笔错位问题的解决

    下面的画画板的代码: public class MainActivity extends Activity { private ImageView iv; private Bitmap baseBit ...

  4. 《sql---教学反馈系统-阶段项目2》

    /* a) 创建数据库 使用T-SQL创建数据库feedback,要求:①一个主要文件(存放在第一个硬盘分区C:\project文件夹下),初始大小为10M,最大为200M,文件自动增长率为15% ② ...

  5. Palindrome Numbers(LA2889)第n个回文数是?

     J - Palindrome Numbers Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu ...

  6. Android登陆界面实现-支持输入框清楚和震动效果功能

    演示效果 主要代码例如以下 自己定义的一个EditText.用于实现有文字的时候显示能够清楚的button: import android.content.Context; import androi ...

  7. httpclient超时总结(转)

    Httpclient超时 背景: 网站这边多次因为httpclient调用超时时间没设置好导致关掉,影响非常不好,而且问题重复出现,查看网络,没有比较明确介绍httpclient所有超时相关的设置(大 ...

  8. HTML5 Canvas 填充与描边(Fill And Stroke)

    HTML5 Canvas 填充与描边(Fill And Stroke) 演示HTML5 Canvas Fill 与Stroke文字效果,基于Canvas如何实 现纹理填充与描边. 一:颜色填充与描边 ...

  9. 依据二度人脉推荐好友sql

    friend表结构 DROP TABLE IF EXISTS FRIEND; create table friend(     uid        bigint not null comment ' ...

  10. cocos2d-x 2.2.3 创建项目的方法

    直接复制粘贴到txt文本,然后修改后缀为.bat,然后将bat文件放到tools\project-creator的目录下即可. :project_input @echo 请输入项目名称,按回车,例:H ...