3つの言語は36選7の全配列を実現します.
8413 ワード
java版
package com.swfml.test;
/**
* m n (m > n > 0)
* <p> :
* <p> n ( 1 5 3 )
* <p>1, 2, 3
* <p>
* <p>5, 4, 3
* @author SavageGarden
*
*/
public class Test {
/**
* M
*/
public static int M = 5;
/**
* N
*/
public static int N = 4;
/**
* ( )
*/
public static int[] arrayMin = new int[N];
/**
* ( )
*/
public static int[] arrayMax = new int[N];
/**
* ( )
*/
public static void initArrayMin() {
for(int i = 0; i < N; i ++) {
arrayMin[i] = i + 1;
}
}
/**
* ( )
*/
public static void initArrayMax() {
for(int i = 0; i < N; i ++) {
arrayMax[i] = M - i;
}
}
/**
* ( )
* @param array
*/
public static void printArray(int[] array) {
for(int i = 0; i < array.length; i ++) {
System.out.print(array[i] + "\t");
}
System.out.println();
}
/**
* ( )
* @param array
* @param index
* @param value
* @return
*/
public static boolean checkExit(int[] array, int index, int value) {
for(int i = 0; i <= index; i ++) {
if(array[i] == value) {
return true;
}
}
return false;
}
/**
* ( )
* @param array
* @param index
* @return
*/
public static int getNextValue(int[] array, int index) {
for(int i = 0; i < M; i ++) {
if(!checkExit(array, index, i + 1)) {
return i + 1;
}
}
return 0;
}
/**
* ( ) , ( )
* @param array
* @param index
*/
public static int[] getNextArray(int[] array, int index) {
int value = array[index] + 1;
while(checkExit(array, index, value)) {
value ++;
}
if(value <= M) {
array[index] = value;
if(index < N - 1) {
while(index < N - 1) {
value = getNextValue(array, index);
index ++;
array[index] = value;
}
}
return array;
} else {
index--;
if(index == -1) {
return null;
}
return getNextArray(array, index);
}
}
public static void getAll() {
initArrayMin();
initArrayMax();
printArray(arrayMin);
int[] temp;
while((temp = getNextArray(arrayMin, N - 1)) != null) {
printArray(temp);
}
printArray(arrayMax);
}
public static void main(String args[]) {
getAll();
}
}
JavaScript版<html>
<body>
<div id="message"/>
</body>
</html>
<script>
//M
var M = 5;
//N
var N = 3;
// ( )
var arrayMin = new Array(N);
// ( )
var arrayMax = new Array(N);
var message = "<textarea cols='100' rows='50'>";
/**
* ( )
*/
function initArrayMin() {
for(var i = 0; i < N; i ++) {
arrayMin[i] = i + 1;
}
}
/**
* ( )
*/
function initArrayMax() {
for(var i = 0; i < N; i ++) {
arrayMax[i] = M - i;
}
}
/**
* ( )
* @param array
*/
function printArray(array) {
for(var i = 0; i < array.length; i ++) {
message += array[i] + "\t";
}
message += "
";
}
/**
* ( )
* @param array
* @param index
* @param value
* @return
*/
function checkExit(array, index, value) {
for(var i = 0; i <= index; i ++) {
if(array[i] == value) {
return true;
}
}
return false;
}
/**
* ( )
* @param array
* @param index
* @return
*/
function getNextValue(array, index) {
for(var i = 0; i < M; i ++) {
if(!checkExit(array, index, i + 1)) {
return i + 1;
}
}
return 0;
}
/**
* ( ) , ( )
* @param array
* @param index
*/
function getNextArray(array, index) {
var value = array[index] + 1;
while(checkExit(array, index, value)) {
value ++;
}
if(value <= M) {
array[index] = value;
if(index < N - 1) {
while(index < N - 1) {
value = getNextValue(array, index);
index ++;
array[index] = value;
}
}
return array;
} else {
index--;
if(index == -1) {
return null;
}
return getNextArray(array, index);
}
}
function getAll() {
initArrayMin();
initArrayMax();
printArray(arrayMin);
var temp;
while((temp = getNextArray(arrayMin, N - 1)) != null) {
printArray(temp);
}
message += "</textarea>";
document.getElementById("message").innerHTML = message;
}
getAll();
</script>
C版#include <stdio.h>
#define M 5
#define N 4
/* ( ) */
int arrayMin[N];
/* ( ) */
int arrayMax[N];
void initArrayMin();
void initArrayMax();
void printArray(int *array);
int checkExit(int *array, int index, int value);
int getNextValue(int *array, int index);
int *getNextArray(int *array, int index);
void getAll();
/* ( ) */
void initArrayMin()
{
int i;
for(i = 0; i < N; i ++)
{
arrayMin[i]= i + 1;
}
}
/* ( ) */
void initArrayMax()
{
int i;
for(i = 0; i < N; i ++)
{
arrayMax[i] = M - i;
}
}
/* ( ) */
void printArray(int *array)
{
int i;
for(i = 0; i < N; i ++)
{
printf("%d\t", *(array + i));
}
printf("
");
}
/* ( ) */
int checkExit(int *array, int index, int value)
{
int i;
for(i = 0; i <= index; i ++) {
if(*(array + i) == value) {
return 1;
}
}
return 0;
}
/* ( ) */
int getNextValue(int *array, int index)
{
int i;
for(i = 0; i < M; i ++) {
if(!checkExit(array, index, i + 1)) {
return i + 1;
}
}
return 0;
}
/* ( ) , ( ) */
int *getNextArray(int *array, int index)
{
int value = *(array + index) + 1;
while(checkExit(array, index, value) == 1) {
value ++;
}
if(value <= M) {
*(array + index) = value;
if(index < N - 1) {
while(index < N - 1) {
value = getNextValue(array, index);
index ++;
*(array + index) = value;
}
}
return array;
} else {
index--;
if(index == -1) {
return NULL;
}
return getNextArray(array, index);
}
}
void getAll()
{
initArrayMin();
initArrayMax();
printArray(arrayMin);
int *temp;
while((temp = getNextArray(arrayMin, N - 1)) != NULL) {
printArray(temp);
}
}
void main()
{
getAll();
}