十字爆破 預處理計算矩陣行列和

2021-10-06 22:02:26 字數 1045 閱讀 4672

題目描述

牛牛在玩乙個遊戲:

一共有n行m列共nm個方格,每個方格中有乙個整數。

牛牛選擇乙個方格,可以得到和這個方格同行、同列的所有數之和的得分。

例如:對於乙個22的方格:

1 23 4

牛牛選擇每個方格的得分如下:

6 78 9

因為1+2+3=6,1+2+4=7,1+3+4=8,2+3+4=9。

現在牛牛想知道下一步選擇每個格仔的得分情況,你可以幫幫他嗎?

輸入描述:

第一行有兩個正整數 和 ,代表方格的行數和列數。

接下來的 行,每行有 個數 aija_aij​,代表每個方格中的整數。

輸出描述:

輸出 行 列整數,分別代表選擇每個位置方格的得分情況。

示例1輸入

複製2 2

1 23 4

輸出複製

6 78 9

備註:本題輸入和輸出資料量較大,盡量使用scanf或更快的io方式~

本題矩陣的行列m,n是不確定的,所以無法直接開乙個非常大的陣列。有兩個解決辦法:

1.使用new動態分配記憶體,按照每次輸入的m,n建立矩陣。

2.對輸入的資料預處理,利用三個陣列分別記錄輸入的資料,行資料之和,列資料之和。

處理細節:

(1)將a[i][j] 表示成a[i * m + j]

(2)利用i / m 表示當前行數(n * m的矩陣每行都有m個數),i % m表示當前列數(模的計數性質)

**實現:

#include

using

namespace std;

long

long

typedef ll;

ll a[

1000010

], sl[

1000010

], sr[

1000010];

intmain()

for(ll i =

0; i < n * m; i++

)return0;

}

十字鍊錶 稀疏矩陣

include includetypedef struct olnode olnode,olink typedef struct 行和列煉表頭指標向量基址,由creatsmatrix ol 分配 crosslist 初始化m crosslist型別的變數必須初始化,否則建立 複製矩陣將出錯 bool...

矩陣相加(十字鍊錶)

描述 輸入兩個稀疏矩陣a和b,用十字鍊錶實現a a b,輸出它們相加的結果。輸入第一行輸入四個正整數,分別是兩個矩陣的行m 列n 第乙個矩陣的非零元素的個數t1和第二個矩陣的非零元素的個數t2,接下來的t1 t2行是三元組,分別是第乙個矩陣的資料和第二個矩陣的資料,三元組的第乙個元素表示行,第二個元...

稀疏矩陣相加(十字鍊錶儲存)

標頭檔案 linklist.h inte ce for the linklist class.if defined afx linklist h 0f0cca3e d836 4bb4 9030 b548558fc57e included define afx linklist h 0f0cca3e ...