প্রদত্ত কাজটি হল একটি প্রদত্ত পূর্ণসংখ্যা N দিয়ে একটি গাছ তৈরি করা যাতে, সমস্ত অর্ডার করা জোড়ার (x,y) জন্য ডিগ্রি(x) * ডিগ্রি(y) এর যোগফল সর্বাধিক এবং x y এর সমান নয়।
ইনপুট −N=5
আউটপুট −50
ব্যাখ্যা
1 \ 2 \ 3 \ 4 \ 5 Degree of 1st node = 1 Degree of 2nd node = 2 Degree of 3rd node = 2 Degree of 4th node = 2 Degree of 5th node = 1
সমস্ত অর্ডার করা জোড়ার জন্য সমস্ত ডিগ্রীর পণ্য (x, y) −
1st node = 1*2 + 1*2 + 1*2 + 1*1 = 7 2nd node = 2*1 + 2*2 + 2*2 + 2*1 = 12 3rd node = 2*1 + 2*2 + 2*2 + 2*1 = 12 4th node = 2*1 + 2*2 + 2*2 + 2*1 = 12 5th node = 1*2 + 1*2 + 1*2 + 1*1 = 7 Total sum = 50
ইনপুট −N=7
আউটপুট −122
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
একটি গাছের সমস্ত নোডের ডিগ্রীর সমষ্টি হল − (2 * N) – 2. এখানে N =গাছে নোডের সংখ্যা। যোগফল সর্বাধিক করার জন্য, লিফ নোডের সংখ্যা কমিয়ে আনতে হবে।
-
ইনসাইড ম্যাক্স() ফাংশন int sum=0 আরম্ভ করে এবং x
শর্তে x=1 এবং y=1 শুরু করে নেস্টেড লুপ তৈরি করে। -
নেস্টেড লুপের ভিতরে প্রথমে চেক করুন if(x==y), যদি তাই হয় তাহলে continue যোগ করুন; বিবৃতি
-
অন্যথায় int degree=2 আরম্ভ করুন এবং if স্টেটমেন্ট ব্যবহার করে চেক করুন if(x==1 || x==n)। যদি তাই হয় তাহলে ডিগ্রিএক্স=1 লিখুন। তারপর int degree=2 আরম্ভ করুন এবং ভ্যারিয়েবল y
এর জন্য একই কাজ করুন -
অবশেষে, লুপগুলি বন্ধ করার আগে, − sum =(degreeX + degreeY)
লিখে যোগফল পরিবর্তন করুন
উদাহরণ
#include <bits/stdc++.h> using namespace std; int Max(int N){ int sum = 0; for (int x = 1; x <= N; x++){ for (int y = 1; y <= N; y++){ if (x == y) continue; //Initializing degree for node x to 2 int degreeX = 2; //If x is the leaf node or the root node if (x == 1 || x == N) degreeX = 1; //Initializing degree for node y to 2 int degreeY = 2; //If y is the leaf node or the root node if (y == 1 || y == N) degreeY = 1; //Updating sum sum += (degreeX * degreeY); } } return sum; } //Main function int main(){ int N = 5; cout << Max(N); }
আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
50