64,646
社区成员
发帖
与我相关
我的任务
分享
namespace myTestDemo
{
class Program
{
private static int[] arrOrg = { 1, 2, 3, 4, 5, 6, 7 , 8, 9 }; //原始组合数据
private static int[] arrUse = { 0, 0, 0, 0 ,0 , 0 , 0, 0, 0 };//标识数组
private static int[] arrResult = { 0, 0, 0, 0 ,0 , 0, 0 ,0 , 0};//结果数组
private static int inc = 0;
private static ArrayList list = new ArrayList();
static int nCurrentBit = 0;
static void recursion(int[] arr, int pos) //处理组合
{
if (pos == nCurrentBit)
{
// int sum = FunHash();
// if (list.Contains(sum))
// {
//// return;
// }
//list.Add(sum);
print();
inc++;
return;
}
if (pos < arr.Length)
{
for (int i = 0; i < arr.Length; i++)
{
if (arrUse[i] == 0)
{
arrUse[i]++;
arr[pos] = arrOrg[i];
recursion(arr, pos + 1);
arrUse[i]--;
}
}
}
}
//private static int FunHash()
//{
// int sum = 0;
// int[] arrSave = new int[nCurrentBit];
// Array.Copy(arrResult, arrSave, nCurrentBit);
// Array.Sort(arrSave, 0, nCurrentBit);
// for (int i = 0; i < nCurrentBit; i++)
// {
// sum = sum << 3;
// sum |= arrSave[i];
// }
// return sum;
//}
private static void print()
{
for (int i = 0; i < nCurrentBit; i++)
{
Console.Write(arrResult[i] + "\t");
}
Console.WriteLine();
}
static void Main(string[] args)
{
for (int i = 1; i <= 9;i++ )
{
nCurrentBit = i;
Array.Clear(arrUse, 0, arrUse.Length);
Array.Clear(arrResult, 0, arrResult.Length);
recursion(arrResult, 0);
}
Console.WriteLine("共 {0} 种", inc);
}
}
}
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
namespace myTestDemo
{
class Program
{
private static int[] arrOrg = { 1, 2, 3, 4, 5, 6, 7 , 8, 9 }; //原始组合数据
private static int[] arrUse = { 0, 0, 0, 0 ,0 , 0 , 0, 0, 0 };//标识数组
private static int[] arrResult = { 0, 0, 0, 0 ,0 , 0, 0 ,0 , 0};//结果数组
private static int inc = 0;
private static ArrayList list = new ArrayList();
static int nCurrentBit = 0;
static void recursion(int[] arr, int pos) //处理组合
{
if (pos == nCurrentBit)
{
int sum = FunHash();
if (list.Contains(sum))
{
return;
}
list.Add(sum);
print();
inc++;
return;
}
if (pos < arr.Length)
{
for (int i = 0; i < arr.Length; i++)
{
if (arrUse[i] == 0)
{
arrUse[i]++;
arr[pos] = arrOrg[i];
recursion(arr, pos + 1);
arrUse[i]--;
}
}
}
}
private static int FunHash()
{
int sum = 0;
int[] arrSave = new int[nCurrentBit];
Array.Copy(arrResult, arrSave, nCurrentBit);
Array.Sort(arrSave, 0, nCurrentBit);
for (int i = 0; i < nCurrentBit; i++)
{
sum = sum << 3;
sum |= arrSave[i];
}
return sum;
}
private static void print()
{
for (int i = 0; i < nCurrentBit; i++)
{
Console.Write(arrResult[i] + "\t");
}
Console.WriteLine();
}
static void Main(string[] args)
{
for (int i = 1; i <= 9;i++ )
{
nCurrentBit = i;
recursion(arrResult, 0);
}
Console.WriteLine("共 {0} 种", inc);
}
}
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define START_NUM 1
#define FINISH_NUM 999
#define MAX_LENGTH_NUM 3
int is_duplicate(char* num);
int main(void)
{
char str_num[MAX_LENGTH_NUM+1];
int i;
for(i=START_NUM;i<=FINISH_NUM;++i){
sprintf(str_num,"%d\0",i);
if(is_duplicate(str_num))
printf("%s\n",str_num);
}
return 0;
}
/* 包含重复数字返回0,否则返回1 */
int is_duplicate(char* num)
{
int num_map[10];
bzero(num_map,sizeof(num_map));
while(*num != '\0'){
printf("%d\n",num_map[(*num) - '0']);
num_map[(*num) - '0']++;
if(num_map[(*num) - '0']>1)return 0;
num++;
}
return 1;
}
#include <iostream>
using namespace std;
const int N = 9;
int s[]={1, 2, 3, 4, 5, 6, 7, 8, 9};
void p(void);
void fun(int i);
void swap(int *a, int *b);
int main(int argc, char *argv[])
{
fun(0);
return 0;
}
void p(void)
{
for (int i=0; i < N; ++i)
{
cout << s[i] << " ";
}
cout << endl;
}
void fun(int i)
{
if (i == N)
{
p();
return;
}
for (int a=i; a < N; ++a)
{
swap(&s[i], &s[a]);
fun(i+1);
swap(&s[i], &s[a]);
}
}
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}