藍橋杯 標題 縱橫火柴旗子

2021-08-19 17:30:03 字數 1501 閱讀 4133

【程式設計題】

這是乙個縱橫火柴棒遊戲。如圖[1.jpg],在乙個3x4的方格中,遊戲的雙方輪流放置火柴棒。其規則是:

1. 不能放置在已經放置火柴棒的地方(即只能在空格中放置)。

2. 火柴棒的方向只能是垂直或水平放置。

3. 火柴棒不能與其它格仔中的火柴「連通」。所謂連通是指兩根火柴棒可以連成一條直線,且中間沒有其它不同方向的火柴「阻攔」。

例如:圖[1.jpg]所示的局面下,可以在c2位置豎直放置,但不能水平放置,因為會與a2連通。同樣道理,b2,b3,d2此時兩種方向都不可以放置。但如果c2豎直放置後,d2就可以水平放置了,因為不再會與a2連通(受到了c2的阻擋)。

4. 遊戲雙方輪流放置火柴,不可以棄權,也不可以放多根。直到某一方無法繼續放置,則該方為負(輸的一方)。

遊戲開始時可能已經放置了多根火柴。

你的任務是:編寫程式,讀入初始狀態,計算出對自己最有利的放置方法並輸出。

如圖的局面表示為:

00-1

-000

0100

即用「0」表示空格位置,用「1」表示豎直放置,用「-」表示水平放置。

【輸入、輸出格式要求】

使用者先輸入整數 n(n<100), 表示接下來輸入 n 種初始局面,每種局面佔3行(多個局面間沒有空行)。

程式則輸出對應的每種初始局面,計算出的最佳走法(行號+列號+放置方式)。

例如:使用者輸入:

20111

-000

-000

1111

----

0010

則程式可以輸出:

00-211

輸出結果的含義為:

對第乙個局面,在第0行第0列水平放置

對第二個局面,在第2行第1列垂直放置

注意:行號、列號都是從0開始計數的。

對每種局面可能有多個最佳放置方法(解不唯一),只輸出一種即可。

例如,對第乙個局面,001 也是正解;最第二個局面,201也是正解。

#includeusing namespace std;

char grid[3][4];

char type=;

bool ispositon(int x,int y,char c)//判斷該位置是否可以放

for(int i=x+1;i<3;i++)

}else //-也有兩種情況,左右不能為-,但可以用1隔開

for(int j=y+1;j<4;j++)

}return true;

}bool iswin(int x,int y,char c)//判斷在(x,y)放c能不能贏

grid[i][j]='0'; }}

} } return true;//能贏 }}

void judge()

}//列舉

judge();

} }

藍橋杯 標題 方格填數

在2行5列的格仔中填入1到10的數字。要求 相鄰的格仔中的數,右邊的大於左邊的,下邊的大於上邊的。如 圖1.png 所示的2種,就是合格的填法。請你計算一共有多少種可能的方案。請提交該整數,不要填寫任何多餘的內容 例如 說明性文字 includeusing namespace std int sum...

藍橋杯 標題 奇怪的分式

上小學的時候,小明經常自己發明新演算法。一次,老師出的題目是 1 4 乘以 8 5 小明居然把分子拼接在一起,分母拼接在一起,答案是 18 45 參見圖1.png 老師剛想批評他,轉念一想,這個答案湊巧也對啊,真是見鬼!對於分子 分母都是 1 9 中的一位數的情況,還有哪些算式可以這樣計算呢?請寫出...

藍橋杯 標題 史豐收速算

史豐收速演算法的革命性貢獻是 從高位算起,進製。不需要九九表,徹底顛覆了傳統手算 速算的核心基礎是 1位數乘以多位數的乘法。其中,乘以7是最複雜的,就以它為例。因為,1 7 是個迴圈小數 0.142857.如果多位數超過 142857.就要進1 同理,2 7,3 7,6 7 也都是類似的迴圈小數,多...