使用全排列递归打印
#include<iostream>
#include<string>
#include<algorithm>
#include<sstream>
#include<fstream>
#include<stdio.h>
using namespace std;
void printNumber(char* number, int& n, FILE* fd)//去掉开头的0,打印数字
{
bool beginWith0 = true;
for (int i = 0; i < n; ++i)
{
if (beginWith0 && number[i] != '0')
beginWith0 = false;
if (!beginWith0)
{
cout << number[i];
fprintf(fd, "%c", number[i]);
}
}cout << endl;
fprintf(fd, "\n");
}
void print1ToMaxOfNDigit(char* number, int& n, int i, FILE* fd)//递归排列
{
if (i == n - 1)
{
//cout << number << endl;
printNumber(number, n, fd);
return;
}
for (int j = 0; j < 10; ++j)
{
number[i + 1] = j + '0';
print1ToMaxOfNDigit(number, n, i + 1, fd);
}
}
int main(int argc, char* argv[])//主函数
{
FILE *fd = fopen("a.txt", "w");
if (!fd)
{
cout << "file open error!!! " << endl;
return -1;
}
int n = 4;
char *number = new char[n + 1];
number[n] = '\0';
for (int i = 0; i < 10; ++i)
{
number[0] = i + '0';
print1ToMaxOfNDigit(number, n, 0, fd);
}
delete[] number;
return 0;
}