【問題描述】從含有N個元素的序列中選取元素組成含有M個元素的序列。例如{1,2,3}可以組成多少個8位數。
/*
* 枚舉從任意多的N種元素中選出M個組成新的排列(M>N)
* 例如:{-1,0,1}→{1,0,-1,0,0,1,1,-1}
*/
#include <stdio.h>
#include <math.h>
#define ROW 6561 // 行 3^8=6561
#define COL 8 // 列
#define NUM 3 // 元素個數
int main(int argc, char *argv[])
{
int row = 0; //行數
int col = 0; //列數
int num = 0; //元素個數
int idx = 0; //每一列內的循環變量
int step = 0; // 每一列內的循環步長
int delta = 0; // 每一列內單個元素的循環增量
int src[NUM] = {1,2,3}; // 待選取的元素
int com[ROW][COL] = {0}; // ROW*COL 行*列,存放所有結果
for(num=0;num<NUM;num++) // 輸出列
{
printf("src[%d] = %d \t", col, src[col]);
}
printf("\r\n");
for(col=0;col<COL;col++)
{
delta = (int)pow(NUM,col);
step = NUM*delta;
for(row=0;row<ROW;row++) // 行
{
if(row%step==0)
{
for(idx=0;idx<step;idx++)
{
com[row+idx][COL-col-1] = src[idx/delta];
}
}
}
}
// 輸出結果
for(row=0;row<ROW;row++)
{
for(col=0;col<COL;col++) // 輸出列
{
printf("com[%d][%d] = %d \t", row, col, com[row][col]);
}
printf("\r\n");
}
return 0;
}
【挖坑】的共有多少個整數解?