14 条题解
-
25
-题目回顾-
输入一根木棒的长度n,将该木棒分成三段,每段的长度为正整数,输出由该三段小木棒组成的不一样的三角形个数。
-分析-
这不需要分析,直接枚举a和b,把c算出来,最后检验是否符合三角形成立条件即可
代码如下:
#include <bits/stdc++.h> using namespace std; int c, ans; int main()//by AGOMG { int n; cin >> n; for(int a = 1; a <= n - 2; a++) { for(int b = a; b <= n - 2; b++) { c = n - a - b; if(a + b > c && c >= a && c >= b) { ans++; } } } cout << ans; return 0; }
-
9
P1008 三角形个数
题目描述
输入一根木棒的长度n,将该木棒分成三段,每段的长度为正整数,输出由该三段小木棒组成的不一样的三角形个数。
思路
挨个枚举呗,把符合的累加一下。
for(int i = 1;i <= n - 2;i++) { for(int j = i;j <= n - 2;j++) { l = n - i - j; if(i + j > l && l >= i && l >= j) { sum++; } } }
不过其实循环没啥技术含量,还是主要判断条件
l = n - i - j; if(i + j > l && l >= i && l >= j) { sum++; }
两边之和大于第三边:
i + j > l
实现不同的:
l >= i && l >= j
连起来,成了。
参考代码
#include <iostream>//hetao3097453 using namespace std; int l,sum; int main() { int n; cin >> n; for(int i = 1;i <= n - 2;i++) { for(int j = i;j <= n - 2;j++) { l = n - i - j; if(i + j > l && l >= i && l >= j) { sum++; } } } cout << sum; return 0; }
hetao3097453(bililili @ 一钩出站)
2023年3月19日
-
5
C2每课一题解(第三课 第二题)!!!
此题简单,只需用这节课的知识——循环枚举。
话不多说,上代码!
AC Code
#include<bits/stdc++.h> using namespace std; int main() { int l,sum = 0; int n; cin >> n; for( int i=1;i < n-1;i++ ) { for( int j=i;j <n-1;j++ ) { l = n - i - j; if(i+j>l && l>=i && l>=j) { sum++; } } } cout << sum; return 0; }
-
3
该问题需要计算由给定木棒长度组成的不同三角形个数。下面是解题的思路:
- 定义一个函数
countTriangles
,该函数接收一个参数n
,表示木棒的长度。函数返回值为整数,表示由该木棒组成的不同三角形个数。 - 在
countTriangles
函数内部,定义一个变量count
,用于记录满足条件的三角形个数,初始值为0。 - 使用两层循环遍历所有可能的木棒长度组合。
- 外层循环从1遍历到n-2,表示第一段木棒的长度。
- 内层循环从外层循环变量开始遍历到n-2,表示第二段木棒的长度。
- 计算第三段木棒的长度
c
,即剩余长度n减去前两段木棒的长度。 - 判断是否满足构成三角形的条件:
a + b > c
,c >= a
,c >= b
。 - 如果满足条件,则将
count
加1,表示找到一个符合条件的三角形。 - 循环结束后,返回
count
作为结果。 - 在主函数中,读取输入的木棒长度,并调用
countTriangles
函数计算结果。 - 输出结果。
该解题过程通过两层循环遍历所有可能的木棒长度组合,然后判断是否满足三角形的条件。通过计数器记录符合条件的三角形个数,最后返回结果。
上代码
#include <iostream> using namespace std; int countConsecutiveRanges(int n) { int sum = 0; for (int i = 1; i <= n - 2; i++) { for (int j = i; j <= n - 2; j++) { int l = n - i - j; if (i + j > l && l >= i && l >= j) { sum++; } } } return sum; } int main() { int n; cin >> n; int result = countConsecutiveRanges(n); cout << result << endl; return 0; }
- 定义一个函数
-
2
#include <iostream> using namespace std; int countConsecutiveRanges(int n) { int sum = 0; for (int i = 1; i <= n - 2; i++) { for (int j = i; j <= n - 2; j++) { int l = n - i - j; if (i + j > l && l >= i && l >= j) { sum++; } } } return sum; } int main() { int n; cin >> n; int result = countConsecutiveRanges(n); cout << result << endl; return 0; }
-
1
-题目描述-
题目描述
输入一根木棒的长度n,将该木棒分成三段,每段的长度为正整数,输出由该三段小木棒组成的不一样的三角形个数
代码部分
1.伪代码
不看代码派专用只看思路的,请~~定义长度l,计数num 输入l 枚举a(短直角边)的所有可能(1~l-2) 枚举b(长直角边)的所有可能(a~l-2) c(斜边)=l-a-b if(任意两边之和大于第三边&&c>=a&&c>=b) num++; 输出num
2.代码
#include <bits/stdc++.h> using namespace std; int l,num; int main() { cin>>l; for(int a=1;a<=l-2;a++) { for(int b=a;b<=l-2;b++) { int c=l-a-b; if((a+b>c)&&(a+c>b)&&(b+c>a)&&(c>=b&&c>=a)) { //cout<<a<<" "<<b<<" "<<c<<endl; 调试 num++; } } } cout<<num; return 0; }
-
0
-题目回顾-
输入一根木棒的长度n,将该木棒分成三段,每段的长度为正整数,输出由该三段小木棒组成的不一样的三角形个数。
由于三角形任意连边之和大于第三边,所以:
if(i+j>c&&c>=i&&c>=j) { ans++; }
不废话了,上代码!
#include <bits/stdc++.h> using namespace std; int c, ans; int main() { int n; cin >> n; for(int i=1;i<=n-2;i++) { for(int j=i;j<=n-2;j++) { c = n - i - j; if(i+j>c&&c>=i&&c>=j) { ans++; } } } cout << ans; return 0; }
求赞…………
- 1
信息
- ID
- 12
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 3873
- 已通过
- 1590
- 上传者