幻方修复
幻方修復
問題描述
幻方矩陣(Magic Square)是一個由1-NN,總計NN矩陣,該矩陣滿足每行、列和對角線上的數字和都相等。老師在上課的時候講了幻方德概念與例子,好學的小強將其抄寫到了小本本,但是不小心抄錯一個數字,請找出抄錯的數字并將其改正。
輸入描述:
第一行輸入一個整數N,代表待檢驗幻方德階數(3<=N<50) 接下來的N行,每行N個整數,空格隔開(0<=每個整數<=N*N)輸出描述:
輸出空格隔開的三個整數,分別是:出錯行號、出錯列號、應填入的數字(末尾無空格)示例:
輸入 3 8 1 6 3 5 7 4 0 2 輸出 3 2 9解題思路
本題關鍵是理解幻方矩陣的概念,代碼如下:
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); }總結
- 上一篇: Keil中使用arm section进行
- 下一篇: 力扣 717. 1比特与2比特字符