解题思路
贪心,小的搭配大的,和会最小
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;
}