এই সমস্যাতে, আমাদের একটি অ্যারে দেওয়া হয়েছে যা একটি বৃত্তের টুকরোদের কোণ অনুযায়ী বর্ণনা করে। আমাদের কাজ হল একটি প্রোগ্রাম লিখা যাতে একটি বৃত্তের দুটি অংশের কোণের ন্যূনতম পার্থক্য বের করা যায়।
সমস্যা বর্ণনা: আমাদের বৃত্তের সব টুকরোর কোণ অ্যারেতে দেওয়া আছে। আমাদের টুকরোগুলো যেন দুটি অংশে বিভক্ত করা যায় যাতে তাদের কোণের পার্থক্য ন্যূনতম হয়।
উদাহরণ:
ইনপুট
ang[] = {90, 45, 90, 135}

আউটপুট
90
ব্যাখ্যা
১ম এবং ২য় টুকরো একসাথে: 90 + 45 = 135। ৩য় এবং ৪র্থ টুকরো একসাথে: 90 + 135 = 225। পার্থক্য = 225 - 135 = 90।
সমাধানের পদ্ধতি
এখানে আমাদের সব টুকরো মার্জ করে দুটি অংশ তৈরি করতে হবে। এবং এর জন্য আমাদের непрерыв টুকরো নিতে হবে (উদাহরণে ang1 এবং ang3 একসাথে নেওয়া যাবে না)।
প্রথম অংশের কোণ = A। দ্বিতীয় অংশের কোণ = 360 - A। পার্থক্য = |A - (360 - A)| = 2 * |A - 180|। এই মান ন্যূনতম করতে হবে। আমরা বৃত্তের সব সম্ভাব্য συνεχorrido টুকরো মার্জ করে 2*|A-180|-এর ন্যূনতম মান খুঁজে বের করব।
প্রোগ্রাম
#include <iostream>
#include <math.h>
using namespace std;
int CalcSmallDiffAng(int ang[], int n) {
int Left = 0, A = 0, minDiff = 360;
for (int i = 0; i < n; i++) {
A += ang[i];
while (A >= 180) {
minDiff = min(minDiff, 2 * abs(180 - A));
A -= ang[Left];
Left++;
}
minDiff = min(minDiff, 2 * abs(180 - A));
}
return minDiff;
}
int main() {
int ang[] = { 90, 45, 90, 135 };
int n = sizeof(ang) / sizeof(ang[0]);
cout << "The smallest difference of angles of two parts of a given circle is " << CalcSmallDiffAng(ang, n);
return 0;
}
আউটপুট
The smallest difference of angles of two parts of a given circle is 90