35 刷題 樂樂的方塊

2021-08-21 09:16:31 字數 2065 閱讀 9388

樂樂被小學數學課本中「空間與圖形」的內容迷住了,她整天在琢磨著圖形的各種變換:對稱、旋轉、翻轉等等。這天,樂樂用「@」和「-」兩種字元拼成了一塊n x n(1≦n≦20)的方形圖案a,現在她想將其轉換成新的方形圖案b。有以下幾種轉換方法:

方法1:轉90度:圖案按順時針轉90度。

方法2:轉180度:圖案按順時針轉180度。

方法3:轉270度:圖案按順時針轉270度。

方法4:反射:圖案在水平方向翻轉。

方法5:組合:圖案在水平方向翻轉,然後再按照1到3之間的一種再次轉換。

方法6:不改變:原圖案不改變。

方法7:無效轉換:無法用以上方法得到新圖案。

要轉換成圖案b:

按照上述的方法,有方法2、方法4和方法6共三種方法可以實現這種轉換。你只需要輸出:2,表示採用序號最小的方法。

你能幫助樂樂寫乙個程式,來解決這個難題嗎?

第1行:單獨的乙個整數n。 

第2行到第n+1行:每行n個字元(不是「@」就是「-」);這是轉換前的方塊圖案。 

第n+2行到第2*n+1行:每行n個字元(不是「@」就是「-」);這是轉換後的方塊圖案。

單獨的一行包括1到7之間的乙個數字,表明需要將轉換前的方塊變為轉換後的方塊的轉換方法(序號最小者)。

輸入樣例1:3@-@---@@-@-@@----@輸入樣例2:4----@@@@--@@------@----@-@@--@@-
輸出樣例1:1輸出樣例2:7
#include #define size 1500

using namespace std;

bool a[size][size], b[size][size], t[size][size], t2[size][size], t3[size][size];

int n;

bool comp(bool a[size][size], bool b[size][size]) // 判等

} }return true;}/*

123456

789741

852963

*/bool function1(bool a[size][size]) // 第一種方法 }

return comp(t, b);}/*

123456

789987

654321

*/bool function2(bool a[size][size]) // 第二種方法 }

return comp(t, b);}/*

123456

789369

258147

*/bool function3(bool a[size][size]) // 第三種方法 }

return comp(t, b);}/*

123456

789321

654987

*/bool function4(bool a[size][size]) }

return comp(t, b);

}bool function5(bool a[size][size]) }

for (i = 1; i <= n; i++) }

if (function1(t3))

for (i = 1; i <= n; i++) }

if (function2(t3))

for (i = 1; i <= n; i++) }

if (function3(t3))

return false;

}int main(int argc, char** argv)

} }for (i = 1; i <= n; i++)

} }

if (function1(a))

if (function2(a))

if (function3(a))

if (function4(a))

if (function5(a))

if (comp(a, b))

cout << 7 << endl;

return 0;

}

LeetCode刷題筆記第35題

題目描述 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。解題思路 最直接的想法就是使用二分查詢,如果有序陣列中含有與target值相等的元素,直接返回對應的索引值 如果沒有則在查詢完畢之後,返回對應...

刷題日記 網易 俄羅斯方塊

小易有乙個古老的遊戲機,上面有著經典的遊戲俄羅斯方塊。因為它比較古老,所以規則和一般的俄羅斯方塊不同。熒幕上一共有 n 列,每次都會有乙個 1 x 1 的方塊隨機落下,在同一列中,後落下的方塊會疊在先前的方塊之上,當一整行方塊都被佔滿時,這一行會被消去,並得到1分。有一天,小易又開了一局遊戲,當玩到...

Leetcode刷題 35 搜尋插入位置

問題描述 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。可以假設陣列中無重複元素。示例1 輸入 1,3,5,6 5 輸出 2 考慮的時候想的很簡單,因為是有序陣列,直接暴力遍歷過去就可以了,時間複雜度o n 看了題解裡的提示才...