8/12 题解
解题思路
贪心,小的搭配大的,和会最小
AC代码
#include <iostream>
using namespace std;int main() {int n;cin >> n;int l = 1;int r = n;while(l < r){ cout << l << ' ';l++;cout << r << ' ';--r;if(l == r){cout << l << ' ';break;}}return 0;
}
解题思路
模拟
AC代码
#include <bits/stdc++.h>
using namespace std;
int n, m;
int res;bool safe(vector<vector<char>> &v, int px, int py){if(v[px][py] != v[px][py + 1] && v[px][py + 1] != v[px][py + 2] && v[px][py] != v[px + 1][py] && v[px][py + 1] != v[px + 1][py + 1] && v[px][py + 2] != v[px + 1][py + 2] && v[px + 1][py] != v[px + 1][py + 1] && v[px + 1][py + 1] != v[px + 1][py + 2] && v[px + 1][py] != v[px + 2][py] && v[px + 1][py + 1] != v[px + 2][py + 1] && v[px + 1][py + 2] != v[px + 2][py + 2] && v[px + 2][py] != v[px + 2][py + 1] && v[px + 2][py + 1] != v[px + 2][py + 2]){return true;}return false;
}bool judge(vector<vector<char>> &v, int x, int y){if(x + 3 > n || y + 3 > m || x < 0 || y < 0){return false;}if(!safe(v, x, y)){return false;}int mp[3] = {0,0,0};for(int i = x; i < x + 3; ++i){for(int j = y; j < y + 3; ++j){int num = v[i][j] - 'A';if(num >= 3){return false;}++mp[num]; }}for(int i = 0; i < 3; ++i){ if(!mp[i]){return false;}}return true;
}int main() {cin >> n >> m;vector<vector<char>> v(n, vector<char>(m));for(int i =0 ; i < n; ++i){for(int j = 0; j < m; ++j){cin >> v[i][j];}}for(int i =0 ; i < n; ++i){for(int j = 0; j < m; ++j){if(judge(v, i ,j)){++res;}}}cout << res;return 0;
}