| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 380 人关注过本帖
标题:请指教一下,哪儿出错了
只看楼主 加入收藏
zhangzhigang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-7-1
收藏
 问题点数:0 回复次数:0 
请指教一下,哪儿出错了

如何在123456789之间添加“+”,“—”号使表达式的值等于100,如123+45-67+8-9=100,我写了个程序,但有重复的,也有错误的,但我不知道错哪了,请大家指教!源代码如下:
#include <math.h>
#include <iostream>
using namespace std;

#define Length 8

void factor(int n, int arr[], int arrSign[], int arrLength)
{
if(n==-1)
{
int Result = 0;
int tmpResult = arr[0];

int tmpIndex = 1;

for(int i=0;i<=arrLength;i++)
{
if(arrSign[i]!=0)
{

Result += tmpResult*arrSign[i];
tmpResult = arr[i+1];
tmpIndex = 1;
}
else
{
tmpResult += arr[i+1]*(int)pow(10,tmpIndex);
tmpIndex++;
}
}

Result += tmpResult;

if(Result==100)
{
//cout<<arr[arrLength];
for(int i=arrLength;i>-1;i--)
{
if(arrSign[i]==-1)
cout<<"-";
else if(arrSign[i]==1&&i!=8)
cout<<"+";
cout<<arr[i];
}
cout<<"=100"<<endl;
}
}
else
{
for(int i=-1;i<2;i++)
{
arrSign[n] = i;
factor(n-1, arr, arrSign, arrLength);
}
}
}

int main()
{
int a[]={9,8,7,6,5,4,3,2,1,0};
int pa[Length+1];

factor(Length, a, pa, Length);
system("pause");
return 0;
}

运行如图如下:-1+2-3+4+5+6+78+9=100
12-3-4+5-6+7+89=100
123+4+56+7-89=100
12+3-4+5+67+8+9=100
12+3+4+5-6-7+89=100
1+23-4+56+7+8+9=100
1+23-4+5+6+78-9=100
1+2+3-4+5+6+78+9=100
1+2+34-5+67-8+9=100
12-3-4+5-6+7+89=100
123+4+56+7-89=100
12+3-4+5+67+8+9=100
12+3+4+5-6-7+89=100
1+23-4+56+7+8+9=100
1+23-4+5+6+78-9=100
1+2+3-4+5+6+78+9=100
1+2+34-5+67-8+9=100
请按任意键继续. . .

[此贴子已经被作者于2007-7-1 10:45:46编辑过]

搜索更多相关主题的帖子: 指教 
2007-07-01 10:25
快速回复:请指教一下,哪儿出错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038636 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved