幻方修复
幻方修復(fù)
問(wèn)題描述
幻方矩陣(Magic Square)是一個(gè)由1-NN,總計(jì)NN矩陣,該矩陣滿足每行、列和對(duì)角線上的數(shù)字和都相等。老師在上課的時(shí)候講了幻方德概念與例子,好學(xué)的小強(qiáng)將其抄寫(xiě)到了小本本,但是不小心抄錯(cuò)一個(gè)數(shù)字,請(qǐng)找出抄錯(cuò)的數(shù)字并將其改正。
輸入描述:
第一行輸入一個(gè)整數(shù)N,代表待檢驗(yàn)幻方德階數(shù)(3<=N<50) 接下來(lái)的N行,每行N個(gè)整數(shù),空格隔開(kāi)(0<=每個(gè)整數(shù)<=N*N)輸出描述:
輸出空格隔開(kāi)的三個(gè)整數(shù),分別是:出錯(cuò)行號(hào)、出錯(cuò)列號(hào)、應(yīng)填入的數(shù)字(末尾無(wú)空格)示例:
輸入 3 8 1 6 3 5 7 4 0 2 輸出 3 2 9解題思路
本題關(guān)鍵是理解幻方矩陣的概念,代碼如下:
public string MagicSquare(int N, int[][] squares) {int sum = 0;int Error_r = 0, Error_c = 0;int change_N = 0;int label = 0;for(int i = 0; i < N; i++){sum += squares[i][i];}for(int i = 0; i < N; i++){int sum_r = 0;int sum_c = 0;for(int j = 0; j < N; j++){if(label & 1 == 0)sum_r += squares[i][j];if(label & 2 == 0)sum_c += squares[j][i];}if(sum_r != sum && (label & 1 == 0)){Error_r = i;label |= 1;}if(sum_c != sum && (label & 2 == 0)){Error_c = i;label |= 2;}if(label == 3){change_N = sum - sum_c + squares[Error_r][Error_c];break;}}return string.Format("{0} {1} {2}", Error_r, Error_c, change_N); }總結(jié)
- 上一篇: Keil中使用arm section进行
- 下一篇: 力扣 717. 1比特与2比特字符