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

1个回答

  • 九宫格标个号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;

    }

    }