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

注意:数字顺序不能改变

<pre name="code" class="cpp">nclude <stdio.h>
#include <iostream>
#include <memory.h> #define NUM 6561 //3^8:6561
using namespace std;
int mici(int x, int i) //求解x^i
{
int res = 1;
for (; i>0; i--)
{
res *= x;
}
return (res);
} int main(int argc, char *argv[])
{
int data[9];
int index, level;
int i, j, k=0;
int pre_sign;
int temp = 0;
int sum = 0;
int x = 2; for (i=0; i<NUM; i++) //总共同拥有6561种可能
{
memset(data, 0, sizeof(int)*9); //清零
index = i;
for (level=9; level>1; level--) //有8处符号须要推断
{
pre_sign = index%3; //该空的符号,规定0:+,1:-。2:连接
index = index/3; //往上一层(即上一个空)的位置
switch(pre_sign)
{
case 0:
if (temp == 0)
{
data[k] = level;
}
else
{
data[k] = temp;
temp = 0;
x = 2;
}
k++;
break;
case 1:
if (temp == 0)
{
data[k] = 0 - level;
}
else
{
data[k] = 0 - temp;
temp = 0;
x = 2;
}
k++;
break;
case 2:
if (temp == 0)
{
temp = level + (level-1)*10;
}
else
{
temp = temp + (level-1)*mici(10,x);
x++;
}
break;
default:
break;
}
} if (pre_sign == 2) //处理数字1
{
data[k] = temp;
}
else
{
data[k] = 1;
}
k = 0; //将这些变量复位非常重要。以免影响下一轮。
temp = 0;
x = 2; for (j=0; data[j]!=0; j++) //求和
{
sum = sum + data[j];
} if (sum == 100)
{
for (j=j-1; j>=0; j--) //逆序输出,这样1在前面
{
if (data[j] >0)
{
cout<<"+"<<data[j];
}
else
{
cout<<data[j];
}
}
cout<<" = "<<sum<</*"....."<<i<<*/endl; //i for test
}
sum = 0;
}
return(0);
}


</pre><pre name="code" class="cpp">
  这是我在网上无意间看到的,认为非常有意思,自己就在电脑上试了一下,100多行源码打了半个多小时。最后也还是出现了错误。最后在一个专业的学长的帮助下攻克了问题,原来是编译器的不同导致的。

看来还得好好了解下不同编译器导致的不同问题啊。还有 凝视中尽管说有6561种可能,但不知道为什么最后仅仅出现了11种。有待加强改进啊
  相信自己有朝一日可以自己写出此代码,继续加油!。。 酒吧 年青^0^

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

最新文章

  1. intellij idea 12 编码不可映射字符
  2. C语言产生标准正态分布或高斯分布随机数
  3. 大叔也说Xamarin~Android篇~Activity之间传递数组
  4. Javascript中最常用的55个经典技巧(转)
  5. 记录一次冷备恢复遇到的 ORA-00304问题
  6. 基础学习day06---面向对象二---static,类的初始化和调用顺序、单例模式
  7. 给表追加主键-----报错ORA-02437: 无法验证 (DENGCHAO.TEST) - 违反主键
  8. laravel 开启sql查询日志
  9. JFrame 实现全屏透明背景
  10. 过滤器Filter(2)
  11. C++ Socket UDP &quot;Hello World!&quot;
  12. Flash Android ANE打包之基本流程
  13. Webkit浏览器点击控件时出现的边框消除
  14. 【Python 11】汇率兑换4.0(函数)
  15. &lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %&gt;会报错
  16. javascript记忆
  17. linux存储管理之交换分区
  18. Django框架----模板语法
  19. mybatis 一对多,(多对一,一对一
  20. BZOJ1833或洛谷2602 [ZJOI2010]数字计数

热门文章

  1. iOS:点击button卡死
  2. Eclipse下Android编程代码自动提示
  3. HashTable的数组和连接两种实现方法(Java版本号)
  4. 英文版Ubuntu安装Fcitx输入法
  5. leetcode解析回文子串拆分
  6. UML简单介绍
  7. VSTO学习笔记(一)VSTO概述
  8. Node.js: What is the best "full stack web framework" (with scaffolding, MVC, ORM, etc.) based on Node.js / server-side JavaScript? - Quora
  9. js:进一步关闭(范围:下一个)
  10. [置顶] hdu 4699 2个栈维护 or 伸展树