穷举排列组合列表509102493要这9位数的穷举列表就是所有排列组合的各种可能(3268800种)有软件也行 应该是326880种 多了个0
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/07 16:55:08
穷举排列组合列表509102493要这9位数的穷举列表就是所有排列组合的各种可能(3268800种)有软件也行 应该是326880种 多了个0
穷举排列组合列表
509102493
要这9位数的穷举列表
就是所有排列组合的各种可能(3268800种)
有软件也行
应该是326880种 多了个0
穷举排列组合列表509102493要这9位数的穷举列表就是所有排列组合的各种可能(3268800种)有软件也行 应该是326880种 多了个0
一共就9 个数 哪来3268800种排列?
如果重复的数字看做独立的话 有362880种排列.是不是我没理解你的意思啊?
好马上给你穷举出来
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication7;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/**
*
* @author Yichuan
*/
public class Main {
/**
* @param args the command line arguments
*/
static final byte a = 5;
static final byte b = 0;
static final byte c = 9;
static final byte d = 1;
static final byte e = 0;
static final byte f = 2;
static final byte g = 4;
static final byte h = 9;
static final byte i = 3;
static String result;
static int count = 0;
static byte[] list = new byte[9];
public static void main(String[] args) throws IOException {
BufferedWriter out = new BufferedWriter(new FileWriter("myfile"));
for(int j = 0; j < 9; j ++){
list[j] = a;
for(int k = 0; k < 9; k ++){
if (k == j){
continue;
}
else{
list[k] = b;
}
for(int l = 0; l < 9; l++){
if( l ==j || l == k){
continue;
}
else {
list[l] = c;
}
for(int m = 0; m < 9; m++){
if(m ==l || m ==j || m == k){
continue;
}
else {
list[m] = d;
}
for(int n = 0; n < 9; n++){
if(n == m || n ==l || n ==j || n == k){
continue;
}
else {
list[n] = e;
}
for(int o = 0; o < 9; o++){
if(o == n || o == m || o ==l || o ==j || o == k){
continue;
}
else {
list[o] = f;
}
for(int p = 0; p < 9; p++){
if(p == o || p == n || p == m || p ==l || p ==j || p == k){
continue;
}
else {
list[p] = g;
}
for(int q = 0; q < 9; q++){
if(q == p || q == o || q == n || q == m || q ==l || q ==j || q == k){
continue;
}
else {
list[q] = h;
}
for(int r = 0; r < 9; r++){
if(r ==q || r ==p || r == o || r == n || r == m || r ==l || r ==j || r == k){
continue;
}
else {
list[r] = i;
for(int z = 0; z < 9; z++){
result += list[z] + "";
}
if (count == 15){
out.write(result + "\n");
result = "";
count = 0;
}
else{
result += ",";
count ++;
}
}
}
}
}
}
}
}
}
}
}
}
}
我已经算过了, 这个程序一共生成 362880 个数字, 因为太大 只能给你txt文件链接了.
/*
* 输出n个元素的全排列
*/
#include
#include
#include
void arrange(char *s, int k, int m);
void swap(char *s1, char *s2);
int main(void) <...
全部展开
/*
* 输出n个元素的全排列
*/
#include
#include
#include
void arrange(char *s, int k, int m);
void swap(char *s1, char *s2);
int main(void)
{
int n;
int i;
char *set;
printf("Please input the number of elements (>=0): ");
scanf("%d", &n);
if (n <= 0) {
printf("WARN! The number should be >= 1!\n");
exit(0);
}
set = (char *)calloc(n, sizeof(char));
if (!set) {
printf("Sorry! Not enough memory!\n");
exit(0);
}
/* 读取字符元素 , 限制了输入格式 */
printf("Please input the elements ('X X X ...'):\n\t");
for (i = 0; i < n; i++)
/* Notice the '%ls' : get the next non-blank character */
scanf("%ls", &set[i]);
printf("The set is: {");
for (i = 0; i < n - 1; i++)
printf("%c, ", set[i]);
printf("%c}\n", set[i]);
printf("All arragnement is as follows:\n");
arrange(set, 0, n-1);
free(set);
getchar(); /* 防止输出窗口一闪关闭 */
getchar();
return 0;
}
void arrange(char *s, int k, int m)
{
int i;
if (k == m) {
printf("\t");
for (i = 0; i <= m; i++)
printf("%c", s[i]);
FILE *fp = NULL;
fp = fopen("d:\\pailiezuhe.txt", "at+");
fputs(s, fp);
fputs("\t", fp);
fclose(fp);
} else {
for (i = k; i <= m; i++) {
swap(&s[k], &s[i]);
arrange(s, k + 1, m);
swap(&s[k], &s[i]);
}
}
}
void swap(char *s1, char *s2)
{
char temp = *s1;
*s1 = *s2;
*s2 = temp;
}
上面这段C语言代码可以解决你的问题!
举穷的排列都输出在d盘下的pailiezuhe.txt下
如果不会用C语言 我这边也生成了你说的9个数的举穷全排列表
要的话可以直接发你邮箱去 太多了 3M多 发不上来
如果你不是开玩笑的话
我不太知道要这些数据有什么用????
收起