Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับสี่เหลี่ยมจัตุรัสที่มีด้านคี่ในกระดานหมากรุก (Chessboard) ด้วย C++

โจทย์: ให้กระดานหมากรุกขนาด size × size ต้องการนับจำนวนสี่เหลี่ยมจัตุรัสย่อยที่มีความยาวด้านเป็นเลขคี่

สูตรคำนวณ

สำหรับด้านคี่ i (1, 3, 5, ... ≤ size) จำนวนสี่เหลี่ยมขนาด i×i คือ (size - i + 1)²

ผลรวม: Σ (size - i + 1)² สำหรับ i = 1, 3, 5...

โค้ด C++

#include <bits/stdc++.h>
using namespace std;

int square_odd_length(int size) {
    int count = 0;
    for (int i = 1; i <= size; i += 2) {
        int temp = size - i + 1;
        count += temp * temp;
    }
    return count;
}

int main() {
    int size = 6;
    cout << "Count squares with odd side length in Chessboard are: "
         << square_odd_length(size);
    return 0;
}

ผลลัพธ์

Count squares with odd side length in Chessboard are: 56

ตัวอย่างคำนวณ size=3

  • 1×1: (3-1+1)² = 3² = 9
  • 3×3: (3-3+1)² = 1² = 1
  • รวม = 10

ตัวอย่างคำนวณ size=4

  • 1×1: 4² = 16
  • 3×3: (4-3+1)² = 2² = 4
  • รวม = 20

ความซับซ้อน: Time O(size), Space O(1)