在本教程中,我们将讨论一个程序,以找到给定圆的两个部分的最小角度差。
为此,我们将提供分为n个部分的圆。我们的任务是将这两部分组合成两部分,以使这两部分所成角度的差异最小。
#include <bits/stdc++.h> using namespace std; //返回最小差异 int findMinimumAngle(int arr[], int n) { int l = 0, sum = 0, ans = 360; for (int i = 0; i < n; i++) { sum += arr[i]; while (sum >= 180) { ans = min(ans, 2 * abs(180 - sum)); sum -= arr[l]; l++; } ans = min(ans, 2 * abs(180 - sum)); } return ans; } int main() { int arr[] = { 100, 100, 160 }; int n = sizeof(arr) / sizeof(arr[0]); cout << findMinimumAngle(arr, n) << endl; return 0; }
输出结果
40