数组算法??
整型数组N,从中找出前n个数的和等于total的所有组合,设数组中的每一项小于total.
解法到是想出来就是动手时写的不对?
求完整程序
问题点数:50、回复次数:4Top
1 楼pcboyxhy(-273.15℃)回复于 2005-04-07 17:22:14 得分 20
#include <iostream>
#include <cstdlib>
using namespace std;
const int vsize = 5;
int value[vsize]={50, 25, 10, 5, 1};
int number[vsize]={0};
int total=1;
void out(int end)
{
cout<<endl<<"No. "<<total++<<" ";
for(int i=0; i<end; ++i)
if(number[i])
cout<<value[i]<<"分"<<number[i]<<"张 ";
}
void make(int val, int start)
{
if(val==0){out(start); return;}
if(val<0) return;
if(start>=5) return;
int maxs = val/value[start];
for(int i=0; i<=maxs; ++i)
{
number[start]=i;
make(val-i*value[start], start+1);
}
}
int main(int argc, char *argv[])
{
int v;
cin>>v;
make(v, 0);
system("PAUSE");
return 0;
}
Top
2 楼pcboyxhy(-273.15℃)回复于 2005-04-07 17:23:49 得分 20
如果前n个数每个数只能使用一次
for(int i=0; i<=1; ++i)
{
number[start]=i;
make(val-i*value[start], start+1);
}
Top
3 楼pcboyxhy(-273.15℃)回复于 2005-04-07 17:24:44 得分 0
要剪枝
自己动手Top
4 楼longlijun(风之力)回复于 2005-04-07 18:00:32 得分 10
从中找出前n个数的和等于total的所有组合
对于这个“前”怎么理解, total 本身也在数组中?Top




