九宫格使用C++穷举法实现,我目前的问题就是如何把1-9这个九个数字按照排列组合的方式分配到3*3

矩阵中去,不遗漏,不重复,这里的算法如何实现?

九宫格标个号1-9个格
循环给1-9这9个数字取一个1-9的随机数
建一个长度9的数组做标记,每一个格被分配了之后就标记下,循环的时候重复了就重新给这个数分配。直到所有的9个数都被分配。
srand(time(0));
int nFlag[9]; //记录9个格是否已经被分配
int nLocation[9]; //记录1-9个数的位置
memset(nFlag, 0, sizeof(int)*9);
memset(nLocation, 0, sizeof(int)*9);
for(int i = 0; i < 9; ++i)
{
nLocation[i] = rand()%10;
if(nFlag[ nLocation[i] ] == 1)
{
//如果此格被分配过则重新分配此数字位置。
i--;
}
else
{
//如果没有则分配
nFlag[i] = 1;
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

九宫格使用C++穷举法实现,我目前的问题就是如何把1-9这个九个数字按照排...
循环给1-9这9个数字取一个1-9的随机数 建一个长度9的数组做标记,每一个格被分配了之后就标记下,循环的时候重复了就重新给这个数分配。直到所有的9个数都被分配。srand(time(0));int nFlag[9]; \/\/记录9个格是否已经被分配 int nLocation[9]; \/\/记录1-9个数的位置 memset(nFlag...

C或C++高手进从1到13中任选4个数,运用+,-,*,\/,()使其最后的值为24,这...
如( ( ( 1 + 2 ) + 3 ) * 4 ) = 24 和 ( ( 1 + ( 2 + 3 ) ) * 4 ) = 24去掉不必要的括号和,都能化成:(1 + 2 + 3 )*4 = 24 ,因此一般我们认为上面这两个式子是相同的。 *\/#include <iostream>#include <cstring>#include <cmath>#include <string>#include <ctime>#include ...

组三(三个数字的排列组合)
1.导入itertools模块:importitertools 2.定义三个数字:a=1,b=2,c=3 3.调用permutations函数生成所有的排列组合:result=itertools.permutations([a,b,c],3)4.遍历结果集并输出每个排列组合:foriteminresult:print(item)

编程问题,一组数数的分配及求和相等问题。Matlab和C语言解都行,大家帮...
然后分析一下这道题,可以吧这题理解为12个数不重复排列,然后要求(以下数字为位数)1+2+3=3+4+5=5+6+7=7+8+9=9+10+11=11+12+1 虽然图上是六边形 但是吧他拉成一条直线 完全就是一个一维数组 根据排列组合,12个数不重复排列的个数应该是12!(具体多少就不算了 超级大的)因此解法如...

相似回答