CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

[一个算法问题]从m个数中任取n个数的组合

楼主yangjie9001(yangjie)2006-03-10 14:36:07 在 .NET技术 / C# 提问

输入为“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)个数字组合,将这些组合输出到一个列表。

关键词

  • 算法
  • 个数
  • 高手

得分解答快速导航

  • 帖主:yangjie9001
  • min_jie
  • helloqiqi
  • stephen85

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo