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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

方格稿纸(二维前缀和)

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 方格稿纸(二维前缀和) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

小 y 終于在小學學會了一些字、詞、句子,會寫一點作文了。某一天,小 y 買了一張方格稿紙來寫作文,稿紙是??行??列的,形狀如下所示(圖中?):

某天小 y 的鄰居 小 x 來 小 y 家玩,無聊地用黑墨水筆把 小 y 新買的方格稿紙涂黑了很多格子。每個格子不是完全黑色就是完全白色,如下圖所示。

小 y 不能責怪小 x。作文寫不成了,他也覺得很無聊,就開始數里面有多少“魔幻方陣”。如果稿紙中一個??的正方形區域滿足以下兩個條件,那么它就是魔幻方陣:

(1) 黑白格子的數量差不能超過?;

(2)?不能小于?。

上圖染色后的方格稿紙共有??個魔幻方陣(??個??的魔幻方陣 ,?個??的魔幻方陣)。

現在,請你幫助小 y 編程計算被染色的稿紙里面有多少個魔幻方陣。

關于二維前綴和建議參考二維前綴和!_Banzed的博客-CSDN博客_二維前綴和

#include <iostream>
#include <math.h>
using namespace std;
int n,m,sum;
int a[310][310];
int dp[310][310];
int main() {
?? ?cin>>n>>m;
?? ?for (int i=1;i<=n;i++)?
?? ??? ?for (int j=1;j<=m;j++) {
?? ??? ??? ?cin>>a[i][j];
?? ??? ??? ?dp[i][j] = dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+a[i][j];//動態轉移式方程
?? ??? ?}
?? ?int ans1,ans2;
?? ?for (int k=2;k<=max(n,m);k++) {
?? ??? ?ans1=ans2=0;
?? ??? ?for (int i=1;i<=n-k+1;i++) {
?? ??? ??? ?for (int j=1;j<=m-k+1;j++) {
?? ??? ??? ??? ?int x=i+k-1,
?? ??? ??? ??? ??? ?y=j+k-1;
?? ??? ??? ??? ?ans1 = dp[x][y]-dp[i-1][y]-dp[x][j-1]+dp[i-1][j-1];
?? ??? ??? ??? ?ans2 = k*k-ans1;
?? ??? ??? ??? ?if (abs(ans1-ans2) <= 1)
?? ??? ??? ??? ??? ?sum++;
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?cout<<sum;
?? ?return 0;
}

總結

以上是生活随笔為你收集整理的方格稿纸(二维前缀和)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。