+ -
当前位置:首页 → 问答吧 → 用c++编一个程序数字组合

用c++编一个程序数字组合

时间:2011-12-11

来源:互联网

比如有a到z 26个字母从中任意抽出几个来组合,比如输入一个数字3就把全部的三个字母的组合输出,输入4就把所有四个的字母的组合输出,谢谢各位了,帮帮忙

作者: yilinzhiquan   发布时间: 2011-12-11

参考下以前的贴
http://topic.csdn.net/u/20111104/09/7a5ad2a3-d89f-4c5a-8176-e66db33f091e.html

作者: keiy   发布时间: 2011-12-11

另外,我用C++写了个(由codeproject的EX改写),供参考:
C/C++ code


#include<iostream>
using namespace std;
void char_combination(char n[],int n_column,
            char r[], int r_size, int r_column, int loop);
int main()
{

    int i,nn,rr;
    
    char n[27];
    char r[27];
    
    //初始化
    for(i=0;i<27;i++)
      n[i]='A'+i;
    n[26]='\0';  
    
    while(1) {
        cout << "请输入n,r的值(n>=r>0):" << endl;
        cin >> nn >> rr;
        if ( nn <=0 || nn < rr)
              cout << "输入出错!"<<endl;
              else
      break;
  }
  r[rr]='\0';
    char_combination(n,0,r,rr,0,nn-rr);
    
    cout<<"结束!"<<endl;
    return 0;
}

void char_combination(char n[],int n_column,
            char r[], int r_size, int r_column, int loop)
{
    int localloop=loop;
    int local_n_column=n_column;
    
    if(r_column>(r_size-1))
    {
        cout<<r<<endl;
        return;
    }
    
    for(int i=0;i<=loop;++i)
    {
        r[r_column]=n[n_column+i];
        ++local_n_column;
        char_combination(n,local_n_column,r,r_size,r_column+1,localloop);
        --localloop;
    }
}


作者: keiy   发布时间: 2011-12-11