題目描述
牛牛在玩乙個遊戲:
一共有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 ...