解题思路:
我们来模拟一遍很容易发现,一棵树如果想长得最高,就是看爱丽丝隔多长时间来修剪它
如图,以6为例,一定是往返的时间最长,而往返有两种方式,所以只需要比较两种往返谁大就好了。
其实如果是中间左边的(1 2 3 4),一定是往右往返最大,在中间右边的(5 6 7 8),一定是往左往返最大,但是这个中间数判断有些麻烦,要看总数是奇数还是偶数,又有整形变量精度缺失问题,索性就写个max就做比较了。
参考代码:
#include <stdio.h> #include <math.h> #define ll long long int max(int a,int b){ return a>b?a:b; } int main (){ int i,n; scanf("%d",&n); for(i=1;i<=n;i++){ printf("%d\n",max(i-1,n-i)*2); } return 0; }
0.0分
223 人评分
#include<bits/stdc++.h> using namespace std; int N; int NNN[10000]; int main() { cin>>N; for(int i=1;i<=N;i++) { NNN[i]=max((N-i)*2,2*(i-1)); } for(int i=1;i<=N;i++) { cout<<NNN[i]<<endl; } return 0; }有没有大佬帮我看一下,我这个是94两个测试案例错,一个超时,一个运行错误
#include<stdio.h> int main() { int n = 0; scanf("%d", &n); int mid = n / 2; for (int i = 0; i < n; i++) { int height = 0; if (i < mid) { height = (n - i - 1) * 2; } else { height = i * 2; } printf("%d\n", height); } return 0; }
n=1时的结果是错的
dotcpp0654639 2023-03-19 21:59:52 |
对,不过把n=1单独摘出来处理就行了
uq_37625027644 2023-03-24 17:05:26 |
漏漏漏,测试用例说100%的测试用例,1<N<=10000
C语言训练-计算1977!* (C++代码)浏览:907 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:909 |
蛇行矩阵 (C语言代码)浏览:792 |
校门外的树 (C语言代码)浏览:988 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:582 |
Minesweeper (C语言描述,蓝桥杯)浏览:1176 |
震宇大神的杀毒软件 (C语言代码)浏览:1161 |
模拟计算器 (C语言代码)浏览:2366 |
数组输出 (C语言代码)浏览:749 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:560 |