小白第一次發文章,這個問題我看很多部落客都是用c++來寫的,我提供一種c語言用結構體的思路,過程比較繁瑣但是代碼簡單易懂
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1QTY2QjN1MjZmRGO4AjZ4ITZlRTM0MmNmJmMhJTM3YzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
#include<iostream>
using namespace std;
struct pos {
long long x;
long long y;
int cnt;//滿足四個方位都有垃圾的個數
int cnt1;//滿足上述條件之後的對角線有垃圾的個數
}a[1001];
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i].x >> a[i].y;
a[i].cnt1 = 99;//先初始化為99,防止後續cnt00判斷錯誤
a[i].cnt = 0;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n ; j++) {//判斷四個方位是否有垃圾
if (a[i].x + 1 == a[j].x && a[i].y == a[j].y) {
a[i].cnt++;
}
if (a[i].x == a[j].x && a[i].y + 1 == a[j].y) {
a[i].cnt++;
}
if (a[i].x == a[j].x && a[i].y - 1 == a[j].y) {
a[i].cnt++;
}
if (a[i].x-1 == a[j].x && a[i].y == a[j].y) {
a[i].cnt++;
}
}
}
for (int i = 0; i < n; i++) {
if (a[i].cnt == 4) {
a[i].cnt1 = 0;//當滿足第一個條件之後再初始化cnt1
for (int j = 0; j < n; j++) {//判斷是否滿足對角線的垃圾
if (a[i].x + 1 == a[j].x && a[i].y + 1 == a[j].y) {
a[i].cnt1++;
}
if (a[i].x - 1 == a[j].x && a[i].y - 1 == a[j].y) {
a[i].cnt1++;
}
if (a[i].x + 1 == a[j].x && a[i].y - 1 == a[j].y) {
a[i].cnt1++;
}
if (a[i].x - 1 == a[j].x && a[i].y + 1 == a[j].y) {
a[i].cnt1++;
}
}
}
}
int cnt00 = 0;
int cnt11 = 0;
int cnt22 = 0;
int cnt33 = 0;
int cnt44 = 0;
int cnt55 = 0;
for (int i = 0; i < n; i++) {
if (a[i].cnt1 == 0) {
cnt00++;
}
else if (a[i].cnt1 == 1) {
cnt11++;
}
else if (a[i].cnt1 == 2) {
cnt22++;
}
else if (a[i].cnt1 == 3) {
cnt33++;
}
else if (a[i].cnt1 == 4) {
cnt44 ++ ;
}
}
cout << cnt00 << endl << cnt11 << endl << cnt22 << endl << cnt33 << endl << cnt44 << endl;
return 0;
}