如何在c ++中使用回溯解决0HH1问题

时间:2015-12-13 16:59:27

标签: c++ algorithm

我试图使用回溯算法解决这个难题。在c ++中 我面临的问题是我无法应用回溯

void try1(int x,int y)
{  
    int k=-1;
    do{
        k++ ;
        if(check_color(c[k],x,y))
        {
            h[x][y]=c[k];// c[k]= r or b;          
           if ( check_full() && check_array() && check_equal() )
           {
               cout<<"coloring had finished"; cout<<"  \n  ";
               print(h); getch();
           }         
           else 
           {
               if(y==9&&x<9)
               {
                   y = -1; x++;
               }
               while(y<9 )
               {
                    y=y+1;
                    if(h[x][y]==' ')
                        try1(x,y);
                     /* here should be the backtrack I think
                       if(q=='n')
                      { x--;cout<<h[x][y];
                        if(h[x][y]=='b'){h[x][y]='r';}
                        else {h[x][y]='b';}}*/                 
                    else if ( y==9 && x<9 ){
                        y=-1 ;x++ ; 
                    }
                }
            }
        }
    } while ( k<1 )  ; 
}
谁能帮助我? Ineed所有可能的解决方案回溯

1 个答案:

答案 0 :(得分:0)

Backtrack算法非常简单。你只需选择一个举动。检查这一举动是否合适。然后你去下一个位置。以下是我认为你应该写的内容。

<table st-table="vm.product_conditions" class="table">
    <thead>
    <tr>
        <th st-sort="name">Nombre</th>
        <th st-sort="description">Descripcion</th>
        <th st-sort="status">Estado</th>
    </tr>
    </thead>
    <tbody>
    <tr ng-repeat="condition in vm.product_conditions track by condition.id"
        ng-click="vm.detailProductCondition(condition.id, condition.name)">
        <td>{{ condition.name }}</td>
        <td>{{ condition.description }}</td>
        <td>{{ condition.status ? 'Activa' : 'Inactiva' }}</td>
    </tr>
    </tbody>
</table>