Показать сообщение отдельно

  #5  
Старый 18.03.2010, 23:35
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

вызвать функцию все варианты естественно включают и одинаковые .....

варианты хода считаются разными на том основании что ходы делаются в разное время (что в теории игр не означает эквивалентными вариантами)
Код:
int a[3][3];
int step(int mode)
{
  int i,j,fl;
  for(i=0,fl=0;i<3;i++)
    for(j=0;j<3;j++)
    {
        if(a[i][j]==0)
        {
            a[i][j]=mode;
            step(mode*(-1));
            a[i][j]=0;
            fl=1;
        }
    }
   if(fl==0)
   {
       printf("\r\n===================\r\n");
       for(i=0;i<3;i++)
       {
          printf("*---*---*---*\r\n");
          for(j=0;j<3;j++)
          {
             switch(a[i][j])
             {
                case 0:
                       printf("|   ");
                       break;
                case 1:
                       printf("| X ");
                       break;
                case -1:
                      printf("| O ");
                       break;
             }
          }
          printf("|\r\n");
       }  
        printf("*---*---*---*\r\n");
   }
return 0;
}
а если тебе нужны все варианты ... то эта задача к теории игр вооообще не относится
представь себе что имеешь 10 битовое число ,то тебе нужно всего лишь выбрать все комбинации где количество битов 1 равно количеству 0 .... это заваулированное условие твоей задачи ...

Последний раз редактировалось Delimiter; 18.03.2010 в 23:42..
 
Ответить с цитированием