当前位置:
首页 >
幻方修复
发布时间:2023/12/20
41
豆豆
幻方修复
问题描述
幻方矩阵(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比特字符