在每个解决方案暂停执行一段时间以使动画可见

时间:2015-06-27 18:48:26

标签: javascript jquery

我在javascript中使用回溯编码了N-Queen问题。

我想做什么?

我希望每次到达解决方案时都会发现脚本的执行,并使用动画显示解决方案。

有什么问题?

代码执行速度太快,以至于我看不到任何颜色过渡。

这是我的代码的一部分(我希望在一秒钟内发现脚本的执行)。 有关完整代码,请参阅http://jsfiddle.net/a603smud/1/

function placeQueen(row){
    for(var i=0;i<N && row<N;i++){
      chess[row][i] = 1;
      var temp = row*N+i+1;
      //place a Queen (red color)
      $('#'+temp).css("background-color","red");
      //check if place is safe
      if(check(row,i)){
        if(row==N-1){
           //place is safe and it is last row then
           //solution found 
           //stop execution for a second 
           //then continue
           print();
        }
        else{
          setTimeout(function(){
              placeQueen(row+1);
          },1000);
        }
      }
      //remove the Queen (backtracking)
      $('#'+temp).css("background-color","blue");
      chess[row][i]=0;
    }
} 

红色:女王被放在盒子上 蓝色:框是空的

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

感谢@bergi以及所有有价值的建议 我使用数组存储所有结果,然后使用setInterval函数模拟结果

<?php
$firstArray = Array
(
    '0' => Array
        (
            'orders' => Array
                (
                    'id' => 9,
                    'name' => 'Abdus Sattar Bhuiyan',
                    'email' => 'sattar.kuet@gmail.com',
                    'mobile' => '01673050495',
                    'alt_mobile' => '01818953250',
                    'city_id' => 2,
                    'location_id' => 5,
                    'status' => 'No contact',
                    'chashed' => 'NO',
                    'created' => '2015-06-27 12:49:34',
                    'modified' => '2015-06-27 12:49:34',
                    'comment' => ''
                ),
            'order_products' => Array
                (
                    'id' => 2,
                    'order_id' => 9,
                    'product_id' => 1,
                    'pieces' => 1
                ),
            'products' => Array
                (
                    'id' => 1,
                    'category_id' => 1,
                    'name' => 'নভোযানের নাম সি প্রোগ্রামিং',
                    'writer' => 'Engr. Abdus Sattar Bhuiyan',
                    'created' => '2015-06-24 16:17:45'
                ),
            'psettings' => Array
                (
                    'id' => 1,
                    'category_id' => 1,
                    'product_id' => 1,
                    'img' => '1.jpg',
                    'desc' => 'description',
                    'created' => '2015-06-28 00:28:26',
                    'bppp' => 44000,
                    'sppp' => 45000,
                    'discount' => 25,
                    'service_charge' => 30
                ),
        ),
    '1' => Array
        (
            'orders' => Array
                (
                    'id' => 9,
                    'name' => 'Abdus Sattar Bhuiyan',
                    'email' => 'sattar.kuet@gmail.com',
                    'mobile' => '01673050495',
                    'alt_mobile' => '01818953250',
                    'city_id' => 2,
                    'location_id' => 5,
                    'status' => 'No contact',
                    'chashed' => 'NO',
                    'created' => '2015-06-27 12:49:34',
                    'modified' => '2015-06-27 12:49:34',
                    'comment' => ''
                ),
            'order_products' => Array
                (
                    'id' => 3,
                    'order_id' => 9,
                    'product_id' => 2,
                    'pieces' => 1
                ),
            'products' => Array
                (
                    'id' => 2,
                    'category_id' => 1,
                    'name' => 'Resonance of creativity with C++',
                    'writer' => 'Engr. Abdus Sattar Bhuiyan',
                    'created' => '2015-06-26 07:32:52'
                ),
            'psettings' => Array
                (
                    'id' => 2,
                    'category_id' => 1,
                    'product_id' => 2,
                    'img' => '2.jpg',
                    'desc' => '',
                    'created' => '2015-06-26 07:33:41',
                    'bppp' => 150,
                    'sppp' => 250,
                    'discount' => 20,
                    'service_charge' => 30
                ),
        ),
    '2' => Array
        (
            'orders' => Array
                (
                    'id' => 9,
                    'name' => 'Abdus Sattar Bhuiyan',
                    'email' => 'sattar.kuet@gmail.com',
                    'mobile' => '01673050495',
                    'alt_mobile' => '01818953250',
                    'city_id' => 2,
                    'location_id' => 5,
                    'status' => 'No contact',
                    'chashed' => 'NO',
                    'created' => '2015-06-27 12:49:34',
                    'modified' => '2015-06-27 12:49:34',
                    'comment' => ''
                ),
            'order_products' => Array
                (
                    'id' => 4,
                    'order_id' => 9,
                    'product_id' => 3,
                    'pieces' => 1
                ),
            'products' => Array
                (
                    'id' => 3,
                    'category_id' => 1,
                    'name' => 'programming by story C',
                    'writer' => 'Hasibul Hasan Shanto',
                    'created' => '2015-06-26 07:35:57'
                ),
            'psettings' => Array
                (
                    'id' => 3,
                    'category_id' => 1,
                    'product_id' => 3,
                    'img' => '3.jpg',
                    'desc' => '',
                    'created' => '2015-06-26 07:36:26',
                    'bppp' => 150,
                    'sppp' => 250,
                    'discount' => 10,
                    'service_charge' => 30
                ),
        ),
);
$new_array = array();

foreach($firstArray as $key=> $arr){
    if($key == 0){
        $new_array[0]['orders'] = $arr['orders'];
        $new_array[0]['order_products'][] = $arr['order_products'];
        $new_array[0]['products'][] = $arr['products'];
        $new_array[0]['psettings'][] = $arr['psettings'];
    }else{
         foreach($new_array as $key=> $newarr){
              if($arr['orders'] == $newarr['orders']){
                $new_array[$key]['order_products'][] = $arr['order_products'];
                $new_array[$key]['products'][] = $arr['products'];
                $new_array[$key]['psettings'][] = $arr['psettings'];
              }else{
                  $new_array[] = $arr;
              }
         }
    }

}
echo "<pre/>";print_r($new_array);
?>

Here是完整代码的链接