蒜頭君的班級裡有 n2個同學,現在全班同學已經排列成乙個 n∗n 的方陣,但是老師卻臨時給出了一組新的列隊方案。
為了方便列隊,所以老師只關注這個方陣中同學的性別,不看具體的人是誰。
這裡我們用 00 表示男生,用 11 表示女生。
現在蒜頭君告訴你同學們已經排好的方陣是什麼樣的,再告訴你老師希望的方陣是什麼樣的。
他想知道同學們已經列好的方陣能否通過順時針旋轉變成老師希望的方陣。
1.不需要旋轉則輸出 0。
2.順時針旋轉 90° 則輸出 1。
3.順時針旋轉 180° 則輸出 2。
4.順時針旋轉 270° 則輸出 3。
若不滿足以上四種情況則輸出 -1。
若滿足多種情況,則輸出較小的數字。
第一行為乙個整數 n
接下來的 n 行同學們已經列好的 01 方陣;
再接下來的 n 行表示老師希望的的 01 方陣。
輸出僅有一行,該行只有乙個整數,如題所示。
輸出時每行末尾的多餘空格,不影響答案正確性。
對於 100% 的資料中,1≤n≤20
400
0000
0001
0000
0000
0001
0000
0000
00
1
first[n][n]表示同學們已經排列好的佇列;last[n][n]表示老師要求的最後需要呈現的佇列;scan[n][n]是用來儲存原佇列旋轉後產生的佇列(用來與last[n][n]作比較)。資料範圍比較小,暴力運算即可。
judge()函式用來判斷旋轉後得到的scan與老師要求的last是否完全相同。二位迴圈依次次比較每個位置,只要有乙個位置不同就直接返回false;所有元素完全相同返回true。
將first分別旋轉0°、90°、180°、270°後的佇列,賦給scan,呼叫judge()判斷。
旋轉0°:scan[i][j]=first[i][j];
旋轉90°:scan[i][j]=first[n-j+1][i];
旋轉180°:scan[i][j]=first[n-i+1][n-j+1];
旋轉270°:scan[i][j]=first[j][n-i+1]。
#include #include using namespace std;
int n;
int first[22][22];//1~20 //1~n //同學們已經列好的
int last[22][22];//1~20 //1~n //老師要求的
int scan[22][22];//1~20 //1~n //經過旋轉的
bool judge()
} return 1;
} int main(int argc, char** ar**)
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
if(judge())
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
if(judge())
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
if(judge())
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
if(judge())
printf("-1\n");return 0;
}
week11作業 B 必做題11 2
題目 蒜頭君的班級裡有 n 2 個同學,現在全班同學已經排列成乙個 n n 的方陣,但是老師卻臨時給出了一組新的列隊方案為了方便列隊,所以老師只關注這個方陣中同學的性別,不看具體的人是誰。這裡我們用 0 表示男生,用 1 表示女生.現在蒜頭君告訴你同學們已經排好的方陣是什麼樣的,再告訴你老師希望的方...
Week11作業 A 必做題 11
題目 蒜頭君從現在開始工作,年薪 n 萬。他希望在蒜廠附近買一套 60 平公尺的房子,現在 是 200 萬。假設房子 以每年百分之 k 增長,並且蒜頭君未來年薪不變,且不吃不喝,不用交稅,每年所得 n萬全都積攢起來,問第幾年能夠買下這套房子?第一年年薪 n 萬,房價 200 萬 輸入格式 一行,包含...
week11作業 A 必做題11 1
蒜頭君從現在開始工作,年薪 nnn 萬。他希望在蒜廠附近買一套 606060 平公尺的房子,現在 是 200200200 萬。假設房子 以每年百分之 kkk 增長,並且蒜頭君未來年薪不變,且不吃不喝,不用交稅,每年所得 nnn 萬全都積攢起來,問第幾年能夠買下這套房子?第一年年薪 nnn 萬,房價 ...