[一个算法问题]从m个数中任取n个数的组合
输入为“1,3,5,7,9”这5个数字
输出为
1,3,5
1,3,7
1,3,9
1,5,7
1,5,9
1,7,9
3,5,7
3,5,9
3,7,9
5,7,9
该怎么实现这个算法?
问题点数:100、回复次数:12Top
1 楼yangjie9001(yangjie)回复于 2006-03-10 14:46:59 得分 0
没有高手帮忙看看么?Top
2 楼min_jie(止戈)回复于 2006-03-10 14:47:34 得分 10
递归法。。Top
3 楼yangjie9001(yangjie)回复于 2006-03-10 14:49:30 得分 0
能给些代码提示么?C#的,谢谢Top
4 楼yangjie9001(yangjie)回复于 2006-03-10 15:18:10 得分 0
高手们帮个忙呀Top
5 楼helloqiqi()回复于 2006-03-10 15:18:49 得分 50
string[] arr={"1","3","5","7","9"};
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
for(int k=j+1;k<5;k++)
{
MessageBox.Show(arr[i]+arr[j]+arr[k]);
}
}
}Top
6 楼helloqiqi()回复于 2006-03-10 15:20:00 得分 0
呵呵,楼主给分拉,编译正常Top
7 楼stephen85()回复于 2006-03-10 15:31:32 得分 40
//C++ Code;
//you can change it to C# Code yourself
int index[4]; //used to record the indexes of the selected
int cur; //record the number with the lowest index to be selected
cur = 0;
void fun(int *index,int step)
{
step++;
if(step>3)
{
cout<<array[index[1]]<<" "<<array[index[2]]<<........... //print the result
return;
}
else if(step<=3)
{
for(i=cur;i<5;i++)
{
int tmp = cur;
index[step] = cur;
cur++;
fun(index,step);
cur = tmp;
}
}
}
void main()
{
fun(index,0);
}Top
8 楼yangjie9001(yangjie)回复于 2006-03-10 15:37:07 得分 0
如果改成
输入为“1,3,5,7,9”这5个数字
输出为
1,3,5,*,*
1,3,*,7,*
1,3,*,*,9
1,*,5,7,*
1,*,5,*,9
1,*,*,7,9
*,3,5,7,*
*,3,5,*,9
*,3,*,7,9
*,*,5,7,9
也就是相应的位置用*号来替代,好象复杂的多了
Top
9 楼hyena041(陷入自己的思维中,找不到自己了)回复于 2006-03-10 15:38:39 得分 0
我们这里算法问题都很少了
顶一下
上面都有答案了,呵呵!
学习Top
10 楼hyena041(陷入自己的思维中,找不到自己了)回复于 2006-03-10 15:40:15 得分 0
c++的正确!
牛人,pfTop
11 楼hyena041(陷入自己的思维中,找不到自己了)回复于 2006-03-10 15:40:27 得分 0
呵呵,灌水了Top
12 楼wxdl1981(沉默之狼)回复于 2006-03-10 15:53:17 得分 0
string GetNumbers(string numbers, int n)
{
string[] nums = numbers.Split(',');
if(nums.Length <= n || numbers.Length <= 1) return numbers + "\n";
string sOut = "";
string sLeft = "";
do{
sOut + = nums[0] + ",";
nums[0] = null;
sOut += GetNumbers(String.Jion(",", nums), n -1);
}while(nums.Length > n);
return sOut;
}Top
相关问题
- 【算法】从m个数中任取n个数的排列组合算法!
- 菜鸟问题:直接将n个数插值为m(m>n)个数的算法。 完后立即给分!!!
- 遍历n个数中取m(<n)个数的任意组合,有没有什么好的方法?
- 问个算法,从N个数中要获取M个,让M个数的总和=X
- 问个算法,从N个数中要获取M个,让M个数的总和=X
- 求 从 N (可以有重复的数字)个数中取 M (N>=M)个数的所有排列组合 的算法?
- 问一个datalist的问题,如何显示第N到第M个数据
- 如何用NEW建立元素大小为INT N字节,元素个数为INT M的数组。
- 有N个数分成M组,要求每个组的和之间差为最小
- 求算法:有M个非重复数字,穷举其中N(n<=m)个数字组合,将这些组合输出到一个列表。




