解题思路:
我们来模拟一遍很容易发现,一棵树如果想长得最高,就是看爱丽丝隔多长时间来修剪它
如图,以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
简单的a+b (C语言代码)浏览:564 |
C语言训练-阶乘和数* (C语言代码)-------- 呆板写法浏览:1396 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:821 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:388 |
水仙花 (C语言代码)浏览:1163 |
简单的a+b (C语言代码)浏览:618 |
GC的苦恼 (C语言代码)浏览:672 |
青年歌手大奖赛_评委会打分 (C语言代码)浏览:2248 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:548 |
1218题求大神帮忙看看怎么不能过浏览:759 |