中國象棋將帥問題

這裏的題目就抽取《編程之美》的,原體描述如下:





























我給每個位置定位如下:















注:(1,2)合法,(1,4)不合法,及將與帥不能照面

我的簡單解決方法如下:滿足只使用一個變量的:

#include<iostream>
using std::cout;
using std::endl;
int main(){
        int grid = 1;
        for(; grid<=9; grid++){
                if(grid%3!=1%3) 
                        cout<<"["<<grid<<","<<1<<"] "; 
                if(grid%3!=2%3) 
                        cout<<"["<<grid<<","<<2<<"] "; 
                if(grid%3!=3%3) 
                        cout<<"["<<grid<<","<<3<<"] "; 
                if(grid%3!=4%3) 
                        cout<<"["<<grid<<","<<4<<"] "; 
                if(grid%3!=5%3) 
                        cout<<"["<<grid<<","<<5<<"] "; 
                if(grid%3!=6%3) 
                        cout<<"["<<grid<<","<<6<<"] "; 
                if(grid%3!=7%3) 
                        cout<<"["<<grid<<","<<7<<"] "; 
                if(grid%3!=8%3) 
                        cout<<"["<<grid<<","<<8<<"] "; 
                if(grid%3!=9%3) 
                        cout<<"["<<grid<<","<<9<<"] "; 
                cout<<endl;
        }
        return 0;
}

運行結果如下:








不過,這樣就學不了用一個字節代表8位的方式來存儲數據的方法了。本來也是想着位運算的,想着想着就變成了普通的一個int來表示了。

發佈了45 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章