注册 登录
编程论坛 C++教室

打靶的程序竟然不能执行

轮廓 发布于 2007-09-13 18:23, 683 次点击




说一下,我用的是 visual C++ 6.0

#include<iostream>
using namespace std;
int sum;
int store[10];
void Output()
{
for(int i=9;i>=0;--i)
{
cout<<store[i]<<endl;
}
cout<<endl;
++sum;
}

void Cumput(int score,int num)
{
if(score<0||score>(num+1)*10)
return;
if(num==0)
{
store[num]=score;
Output();
return;
}

for(int i=0;i<=10;++i)
{
store[num]=i;
Cumput(score-i,num-1);
}

}

int main(int argc,char*argv[])
{
Cumput(90,9);
cout<<"总数:"<<sum<<endl;

return 0;
}

5 回复
#2
yuyunliuhen2007-09-13 20:33

怎么不能运行?可以的么。

#3
etherli2007-09-14 14:19
运行是可以运行,但输出的结果却是无限循环.....
for(int i=0;i<=10;++i)
{
store[num]=i;
Cumput(score-i,num-1);
}
貌似这里出问题,你自己改一下.
本人新手,不懂之处请见谅.
#4
远去的列车2007-09-14 15:53
不会无限循环,下面两处有跳出。 不过循环里套递归可有点吓人

if(score<0||score>(num+1)*10)
return;
if(num==0)
{
store[num]=score;
Output();
return;
}
#5
PcrazyC2007-09-14 18:43

程序本身根本没有问题,只是输出的数据太多了,一下子输不完而已.下面的是我将OUTPUT函数里的输出注释了,一下子就得到了结果;

#include<iostream>
using namespace std;
int sum;
int store[10];
void Output()
{
/*for(int i=9;i>=0;--i)
{
cout<<store[i]<<endl;
}
cout<<endl;*/
++sum;
}

void Cumput(int score,int num)
{
if(score<0||score>(num+1)*10)
return;
if(num==0)
{
store[num]=score;
Output();
return;
}

for(int i=0;i<=10;++i)
{
store[num]=i;
Cumput(score-i,num-1);
}

}

int main(int argc,char*argv[])
{
Cumput(90,9);
cout<<"总数:"<<sum<<endl;

return 0;
}

#6
轮廓2007-09-15 14:50


谢谢各位
1