สมมติว่าเรามีตัวเลข n เราสามารถแบ่ง n เป็นลำดับจำนวนเต็มบวกที่ไม่เพิ่มขึ้น ซึ่งผลรวมคือ n น้ำหนักของการแยกคือจำนวนขององค์ประกอบในการแยกที่เท่ากับองค์ประกอบแรก ดังนั้น น้ำหนักของรอยแยก [1,1,1,1,1] คือ 5 น้ำหนักของรอยแยก [5,5,3,3,3] คือ 2 และน้ำหนักของรอยแยก [9] เท่ากับ 1 เราต้องหาจำนวนน้ำหนักที่แตกต่างกันของการแยกตัวของ n
ดังนั้น หากอินพุตมีค่าเท่ากับ n =7 ผลลัพธ์จะเป็น 4 เนื่องจากน้ำหนักที่เป็นไปได้คือ [7], [3, 3, 1], [2, 2, 2, 1], [1, 1, 1 , 1, 1, 1, 1]
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
return (n / 2 + 1)
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; int solve(int n){ return (n / 2 + 1); } int main(){ int n = 7; cout << solve(n) << endl; }
อินพุต
7
ผลลัพธ์
4