欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

幻方修复

发布时间: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); }

总结

以上是生活随笔为你收集整理的幻方修复的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。