開啟章節選單
電子畫布
https://zerojudge.tw/ShowProblem?problemid=o077
想法
每次下筆時,直接用兩層 for
回圈遍歷整張畫布,並把所有距離小於 t
的顏色更新就行了。
考點
- 模擬
- 二維陣列
程式碼
#include <bits/stdc++.h> using namespace std; // 畫布 int pic[100][100]; int main() { int n, m, q; cin >> n >> m >> q; // 處理每次下筆 while (q--) { int x, y, t, k; cin >> x >> y >> t >> k; // 嘗試更新每個位置的值 for (int j = 0; j < n; j++) { for (int l = 0; l < m; l++) { // 只修改距離 <= t 的位置 if (abs(j - x) + abs(l - y) <= t) { // 更新顏色 (因為會混色所以是 +=) pic[j][l] += k; } } } } // 輸出畫布 for (int j = 0; j < n; j++) { for (int l = 0; l < m; l++) { cout << pic[j][l] << ' '; } cout << endl; } }