int n, m; char tu[110][110]; int movex[] = {-1, -1, -1, 0, 0, 1, 1, 1}; int movey[] = {-1, 0, 1, -1, 1, -1, 0, 1};
intmain(){ cin >> n >> m; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> tu[i][j]; } }
for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (tu[i][j] == '*') continue; int cnt = 0; for (int k = 0; k < 8; ++k) { int x = i + movex[k]; int y = j + movey[k]; if (tu[x][y] == '*') cnt++; } tu[i][j] = cnt + '0'; } }
for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cout << tu[i][j]; } cout << endl; } return0; }
boolcheck(int i, int j){ // 检查上方格子 if (i > 1 && a[i-1][j] == y) returntrue; // 检查下方格子 if (i < n && a[i+1][j] == y) returntrue; // 检查左侧格子 if (j > 1 && a[i][j-1] == y) returntrue; // 检查右侧格子 if (j < m && a[i][j+1] == y) returntrue; returnfalse; }
intmain(){ ios::sync_with_stdio(false); cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } } cin >> x >> y; int count = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] == x && check(i, j)) { count++; } } } cout << count << endl; return0; }
int n, m, k, ans; int s[110][110]; // 表示从(0,0)到(a,b)的 1 的个数 char tu[110][110];
intmain(){ cin >> n >> m >> k; for (int i = 1; i <= n; i++) { cin >> tu[i]+1; } // 从第二行递推 for (int i = 1; i <= n; i++) { int cnt = 0; for (int j = 1; j <= m; j++) { cnt += (tu[i][j] == '1'); s[i][j] = s[i-1][j] + cnt; } } ans = INT_MAX; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { for (int a = i; a <= n; a++) { for (int b = j; b <= m; b++) { int cnt = s[a][b] - s[i-1][b] - s[a][j-1] + s[i-1][j-1]; if (cnt >= k) { int tmp = (a-i+1) * (b-j+1); if (tmp < ans) ans = tmp; } } } } } if (ans == INT_MAX) cout << 0 << endl; else cout << ans << endl; return0; }
intmain(){ int n, m; cin >> n >> m; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } int current = 0; for (int i = 0; i < m; i++) { int step = a[current] % n; current = (current - step + n) % n; } cout << current + 1 << endl; return0; }
voidmark(int x, int y, int size){ if (size == 1) return; int half = size/2; for (int i = x; i < x+half; ++i) { for (int j = y; j < y+half; ++j) { v[i][j] = '0'; } } mark(x, y+half, half); mark(x+half, y, half); mark(x+half, y+half, half); }
intmain(){ cin >> n; m = 1<<n; memset(v, '1', sizeof(v)); mark(0, 0, m); for (int i = 0; i < m; ++i) { for (int j = 0; j < m; ++j) { cout << v[i][j] << " "; } cout << endl; } return0; }
int n, x, y, order; int tu[15][15]; int movex[] = {0, 1, 0, -1}; int movey[] = {1, 0, -1, 0}; intmain(){ cin >> n; memset(tu, 0, sizeof(tu)); x = 1; y = 0; order = 0; for (int i = 1; i <= n*n; i++) { int nx = x + movex[order]; int ny = y + movey[order]; if (nx < 1 || nx > n || ny < 1 || ny > n || tu[nx][ny] != 0) { order = (order + 1) % 4; nx = x + movex[order]; ny = y + movey[order]; } x = nx; y = ny; tu[x][y] = i; } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { printf("%3d", tu[i][j]); } printf("\n"); } return0; }
#define MAXN 510 int f[MAXN][MAXN], g[MAXN][MAXN]; int n, m; intmain(){ cin >> n >> m; int cnt = 1; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { f[i][j] = cnt++; } } for (int i = 1; i <=m; ++i) { int x, y, r, z; cin >> x >> y >> r >> z; if (z == 0) { for (int a = x-r; a <= x+r; ++a) for (int b = y-r; b <= y+r; ++b) g[b-y+x][x-a+y]=f[a][b];
} else { for (int a = x-r; a <= x+r; ++a) for (int b = y-r; b <= y+r; ++b) g[y-b+x][a-x+y]=f[a][b]; } for (int a = x-r; a <= x+r; ++a) for (int b = y-r; b <= y+r; ++b) f[a][b] = g[a][b]; } // end of m for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cout << f[i][j] << " "; } cout << endl; } return0; }
boolmatch(char a[12][12], char b[12][12]){ for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { if (a[x][y] != b[x][y]) returnfalse; } } returntrue; }
voidprint(char a[12][12]){ for (int i = 0; i < n; ++i) { cout << a[i] << endl; } }
intmain(){ cin >> n; for (int i = 0; i < n; ++i) { cin >> ori[i]; } for (int i = 0; i < n; ++i) { cin >> dest[i]; } // 方案一 for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { tmp[y][n-x-1] = ori[x][y]; } } if (debug) { cout << "debug 1: " << endl; print(tmp); } if (match(tmp, dest)) { cout << "1" << endl; return0; } // 方案二 for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { tmp2[y][n-x-1] = tmp[x][y]; } } if (match(tmp2, dest)) { cout << "2" << endl; return0; } // 方案三 for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { tmp[y][n-x-1] = tmp2[x][y]; } } if (match(tmp, dest)) { cout << "3" << endl; return0; } // 反射 for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { tmp[x][n-y-1] = ori[x][y]; } } if (match(tmp, dest)) { cout << "4" << endl; return0; } // 反射+旋转90 for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { tmp2[y][n-x-1] = tmp[x][y]; } } if (debug) { cout << "debug 5-1: " << endl; print(tmp2); } if (match(tmp2, dest)) { cout << "5" << endl; return0; } // 反射+旋转180 for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { tmp[y][n-x-1] = tmp2[x][y]; } } if (debug) { cout << "debug 5-2: " << endl; print(tmp); } if (match(tmp, dest)) { cout << "5" << endl; return0; } // 反射+旋转270 for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { tmp2[y][n-x-1] = tmp[x][y]; } } if (debug) { cout << "debug 5-3: " << endl; print(tmp2); } if (match(tmp2, dest)) { cout << "5" << endl; return0; } // 不改变 if (match(ori, dest)) { cout << "6" << endl; return0; } cout << "7" << endl; return0; }
int n, m, tot, ans; int p1, p2; int v[3300]; intmain(){ cin >> n >> m; for (int i = 0; i < n; ++i) { cin >> v[i]; } // 初使化滑动窗口 tot = 0; for (int i = 0; i < m; ++i) { tot += v[i]; } ans = tot; p1 = 0; p2 = m; // 滑动窗口,更新值 while (p2 < n) { tot -= v[p1]; tot += v[p2]; ans = min(ans, tot); p1++; p2++; } cout << ans << endl; return0; }