日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 840. 矩阵中的幻方(数学)

發(fā)布時(shí)間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 840. 矩阵中的幻方(数学) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 題目

3 x 3 的幻方是一個(gè)填充有從 1 到 9 的不同數(shù)字的 3 x 3 矩陣,其中每行,每列以及兩條對(duì)角線上的各數(shù)之和都相等。

給定一個(gè)由整數(shù)組成的 grid,其中有多少個(gè) 3 × 3 的 “幻方” 子矩陣?(每個(gè)子矩陣都是連續(xù)的)。

示例: 輸入: [[4,3,8,4],[9,5,1,9],[2,7,6,2]] 輸出: 1 解釋: 下面的子矩陣是一個(gè) 3 x 3 的幻方: 438 951 276而這一個(gè)不是: 384 519 762總的來(lái)說(shuō),在本示例所給定的矩陣中只有一個(gè) 3 x 3 的幻方子矩陣。 提示: 1 <= grid.length <= 10 1 <= grid[0].length <= 10 0 <= grid[i][j] <= 15

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/magic-squares-in-grid
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

2. 證明中間必須是5


C1+C9=15?C5C_1+C_9=15-C_5C1?+C9?=15?C5?
C3+C7=15?C5C_3+C_7=15-C_5C3?+C7?=15?C5?
C2+C8=15?C5C_2+C_8=15-C_5C2?+C8?=15?C5?
C1+C2+C3+C7+C8+C9=15?C5+15?C5+C2+C8C_1+C_2+C_3+C_7+C_8+C_9=15-C_5+15-C_5+C_2+C_8C1?+C2?+C3?+C7?+C8?+C9?=15?C5?+15?C5?+C2?+C8?
30=15?C5+15?C5+C2+C8=45?3?C530=15-C_5+15-C_5+C_2+C_8=45-3*C_530=15?C5?+15?C5?+C2?+C8?=45?3?C5?
C5=5C_5=5C5?=5

class Solution {int x, y, sum;int nb[10]; public:int numMagicSquaresInside(vector<vector<int>>& grid) {int m = grid.size(), n = grid[0].size(), i, j, count = 0;for(i = 0; i <= m-3; ++i)for(j = 0; j <= n-3; ++j){if(grid[i+1][j+1] != 5)//中間必須是5continue;if(isMagic(i,j,grid))count++;}return count;}bool isMagic(int &i, int &j, vector<vector<int>>& grid){memset(nb,0,sizeof nb);for(x=i; x<i+3; ++x){sum = 0;for(y=j; y<j+3; ++y){sum += grid[x][y];//橫向if(grid[x][y]>=1 && grid[x][y]<=9 && nb[grid[x][y]]==0)nb[grid[x][y]] = 1;//判斷是否只有1-9,且不重復(fù)的數(shù)}if(sum != 15)return false;}sum = 0;for(x = 1; x <= 9; ++x)sum += nb[x];if(sum != 9)//判斷是否只有1-9,且不重復(fù)的數(shù)return false;for(y=j; y<j+3; ++y){sum = 0;for(x=i; x<i+3; ++x)sum += grid[x][y];//縱向if(sum != 15)return false;}sum = grid[i][j]+grid[i+1][j+1]+grid[i+2][j+2];//對(duì)角線if(sum != 15)return false;return grid[i+2][j]+grid[i+1][j+1]+grid[i][j+2] == 15;//對(duì)角線} };

總結(jié)

以上是生活随笔為你收集整理的LeetCode 840. 矩阵中的幻方(数学)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。