C++ 实现:有 n 个木棍长度分别为 123……n现在明明有一把刀每次选定一个长度进行切割若木棍长度小于选定值则不切割多个木棍可以同时切割现在明明想计算至少需要切多少刀可以将所有木棍的长度都变为 0你能帮明明找找答案吗?1根木棍1:以长度1为单位切 1 刀后长度变为 0;总共至少需要 1 刀;2根木根12:以长度 1 为单位切 1 刀后长度变为 01再以长度 1 为单位切一刀后长度变为 00;总
解题思路: 对于长度为n的木棍,可以从n开始递减,每次以当前长度为单位进行切割,直到所有木棍的长度都变为0为止。每次切割后,长度小于选定值的木棍不需要再进行切割。
具体实现步骤:
- 输入木棍的个数n;
- 初始化刀数sum为0;
- 从n开始递减,对于每个长度i,判断长度大于等于i的木棍个数,将其切割为长度为i的木棍,并将sum加1;
- 输出sum。
C++代码实现如下:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
for (int i = n; i >= 1; i--) {
int count = n - i + 1;
sum += count;
n -= count;
}
cout << sum << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/id5k 著作权归作者所有。请勿转载和采集!