สมการเส้นตรงที่ควรได้คือ y =mx + c จากอาร์เรย์ m และ c เราต้องหาจำนวนจุดสั่งซื้อที่ตรงกับสมการเส้นตรง มาดูตัวอย่างกัน
ป้อนข้อมูล
arr = [1, 2, 3] m = 1 c = 1
ผลผลิต
2
คู่ที่เป็นไปตามสมการเส้นตรงคือ
2 1 3 2
อัลกอริทึม
- เริ่มต้นอาร์เรย์ m และ c
- เขียนสองลูปเพื่อรับคู่ทั้งหมดจากอาร์เรย์
- ตรวจสอบว่าทั้งคู่เป็นไปตามสมการเส้นตรงหรือไม่
- เราตรวจสอบได้ว่าสมการนั้นตรงหรือไม่โดยการแทนค่าลงในสมการเส้นตรง
- หากทั้งคู่เป็นไปตามสมการเส้นตรง ให้เพิ่มการนับ
- คืนการนับ
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
#include <bits/stdc++.h> using namespace std; bool isSatisfyingLineEquation(int arr[], int i, int j, int m, int c) { if (i == j) { return false; } return arr[j] == m * arr[i] + c; } int getOrderedPointsPairCount(int arr[], int n, int m, int c) { int count = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (isSatisfyingLineEquation(arr, i, j, m, c)) { count++; } } } return count; } int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int n = 10; int m = 1, c = 1; cout << getOrderedPointsPairCount(arr, n, m, c) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
9