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

จัตุรัสละตินในภาษา C++


จตุรัสละตินเป็นเมทริกซ์ที่มีรูปแบบพิเศษ มาดูตัวอย่างต่างๆ เพื่อตรวจสอบรูปแบบกัน

1 2
2 1

1 2 3
3 1 2
2 3 1

1 2 3 4
4 1 2 3
3 4 1 2
2 3 4 1

จตุรัสละตินที่คุณได้รับจะมีขนาดแตกต่างกันตามที่คุณสังเกตเห็นในตัวอย่างด้านบน แต่ถ้าคุณสังเกตรูปแบบของเมทริกซ์ข้างต้นอย่างรอบคอบ คุณจะพบว่าจำนวนสุดท้ายของแถวก่อนหน้ามาเป็นองค์ประกอบแรกของแถวถัดไป

นั่นคือรูปแบบที่ซ่อนอยู่ในจตุรัสละติน เราต้องเขียนโปรแกรมที่สร้างเมทริกซ์ข้างต้นสำหรับอินพุต n

อัลกอริทึม

  • เริ่มต้น n ด้วยตัวเลขใดๆ ที่คุณต้องการ
  • เริ่มต้นตัวเลขที่มีค่า n + 1 เรียกว่า first_half_end
  • เขียนลูปที่วนซ้ำจาก 1 ถึง n ทั้งสองอย่างรวมกัน
    • กำหนดค่า first_half_end ให้กับตัวแปรชื่อ first_half_start
    • เขียนลูปจนกระทั่ง first_half_start ถึงค่า n.
      • พิมพ์ตัวแปรการวนซ้ำ เช่น first_half_start
    • เขียนลูปที่วนซ้ำจาก 1 ถึง first_half_end
      • พิมพ์ตัวแปรการวนซ้ำ
    • ลดค่าของ first_half_end ลง 1
    • เลื่อนแถวถัดไป

การนำไปใช้

ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++

#include <bits/stdc++.h>

using namespace std;

void generateLatinSquare(int n) {
   int first_half_end = n + 1;

   for (int i = 1; i <= n; i++) {
      int first_half_start = first_half_end;
      while (first_half_start <= n) {
         cout << first_half_start << " ";
         first_half_start++;
      }

      for (int second_half_start = 1; second_half_start < first_half_end; second_half_start++){
         cout << second_half_start << " ";
      }
      first_half_end--;
   cout << endl;
   }
   cout << endl;
}

int main(void) {
   generateLatinSquare(2);
   generateLatinSquare(3);
   generateLatinSquare(4);
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

1 2
2 1

1 2 3
3 1 2
2 3 1

1 2 3 4
4 1 2 3
3 4 1 2
2 3 4 1