| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1029 人关注过本帖
标题:研究生入学考试中的一道题~~
只看楼主 加入收藏
chendot
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2004-12-31
收藏
 问题点数:0 回复次数:8 
研究生入学考试中的一道题~~
各位好,题目大意是这样的,{1,2...n},该集合中取出r个元素(应该不能重复),打印出所有取法,应该怎么编呢??
搜索更多相关主题的帖子: 入学考试 
2004-12-31 21:42
renyihehe
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2004-12-19
收藏
得分:0 
看过类似的题,好像是依次取前面的r-1个数为一组,然后在后面的数中取一个作为第r个数。
2005-01-01 11:03
renyihehe
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2004-12-19
收藏
得分:0 
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<iterator>
#include<iomanip>
using namespace std;
int main()
{
  vector<char> v(4);
   
  char a[35]={'1','2','3','4','5','6','7','8','9','a','b','c','d',
               'e','f','g','h','i','j','k','l','m','n','o','p',
               'q','r','s','t','u','v','w','s','y','z'};
    for(int k=0;k<=31;k++)
    {  for(int m=k+3;m<=34;m++)//在数组a中选四个数
         {  v[0]=a[k];
            v[1]=a[k+1];
            v[2]=a[k+2];
            v[3]=a[m];
            copy(v.begin(), v.end() , ostream_iterator<char>(cout,"")); //对这四个数进行全排列
              cout<<setw(5);
            while( next_permutation( v.begin(), v.end() ) )
            {
              copy(v.begin(), v.end() , ostream_iterator<char>(cout,""));
                cout<<setw(5);
            }
        }   
    }   
  system("pause");
}

跟这个程序差不多吧!
2005-01-01 11:06
renyihehe
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2004-12-19
收藏
得分:0 
以下是引用WebCrazy在2005-01-01 12:12:06的发言: 好象是C++写的吧
是的,不可以么?
2005-01-01 14:28
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
组合数学中的一个问题
2005-01-04 18:15
wx3885
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-1-10
收藏
得分:0 
采用递归啊
2005-01-10 13:59
ywc19840825
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-4-2
收藏
得分:0 
是啊!递归是个好办发
法!
2005-04-02 18:38
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
还是3楼的兄弟强。小弟受益非浅。。。。。我用c写了一段。简单很多的。。。。。只是为了测验的罢了。不过很好理解。一看就明白。
#include<stdio.h>
main(){
 int a[]={1,2,3,4,5},v[3];  //5个数,任选3个来组合
 int i,j;
 for(i=0;i<3;i++)
  for(j=i+2;j<5;j++){
             v[0]=a[i];
             v[1]=a[i+1];
             v[2]=a[j];  
    printf("%d %d %d\n",v[0],v[1],v[2]);
  }
}思想是3楼兄弟的。。。。。。

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-05 12:04
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
我刚才发的是错误的。大家别看。 只是他等与5和3的时候是对的。但是6和3的时候就不对了。他不能打印出 1 3 4这样的组。各位朋友sorry

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-05 12:30
快速回复:研究生入学考试中的一道题~~
数据加载中...
 
   



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

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