求指定数字组合计算器或C源码

来源:百度知道 编辑:UC知道 时间:2024/06/14 13:52:43
指定从 456789等数字中 抽出N个数字进行组合,要求数字不重复。
计算器或源码都可以,源码要求把输出的组合存储为TXT文件。

首先输入你想要组合的数字,如 456789
然后输入 N ,如 5
程序会生成所有 5 位的组合,写入文件 "output.txt"

#include<cstdio>
#include<cstdlib>
#include<vector>
#include<algorithm>
using namespace std;

vector<char> digits;
int N;

bool combout(char *filename){
FILE *fp = fopen(filename, "w");
if(!fp)return false;
vector<int> mask(digits.size());
fill_n(mask.begin(), N, 1);
do{
for(size_t i=0; i<digits.size(); ++i){
if(mask[i])
fputc(digits[i], fp);
}
fputc('\n', fp);
}while(prev_permutation(mask.begin(), mask.end()));
fclose(fp);
return true;
}

int main(){
char ch;
printf("Input the digits:\n");
while((ch = getchar()) != '\n'){
if(ch >= '!' && ch <