标签:
一、题目要求
N(i+1) = N(i) + lcount + mcount -(rcount-mcount);
mcount = midNext;
三、代码实现
// chengxuzhimei.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "stdlib.h" #define MAX 1000 void getFloorNo(int *input, int size) { int result[MAX] = {0}; int lcount,mcount,rcount; //分别表示小于、等于、大于第i个数 int cur; int l,r; int i; l = r = 0; cur = 0; lcount = 0; rcount = size; mcount = 0; for(i = 0;i<size;i++) { r+=input[i]; } result[0] = r; printf("停在各楼层时爬楼梯的总和分别为:\n"); for(i=1;i<=input[size-1];i++) { lcount += mcount; rcount -= mcount; r -= rcount; l += lcount; result[i] = l + r; printf ( "停在第%d层总共要走%d层楼梯\n",i, result[i] ); mcount = 0; while(input[cur] == i) { cur++; mcount++; } } } int main(void) { int nperson; int input[MAX]; printf("请输入上电梯的人数:"); scanf("%d",&nperson); printf("请输入每个人进入电梯后按下的楼层数\n"); for(int i=0;i<nperson;i++) { scanf("%d",&input[i]); } getFloorNo(input,nperson); return 0; }
四、截图
五、心得体会
课上没有了解老师说的方法,只有自己想的复杂的方法,就是时间复杂度为O(N^2)。但是在课下发现网上有好多这个问题的相关方法,经过分析还是觉得这种方法较容易理解。其实思维还是太正常化,被局限了。以后要活跃点呢。
标签:
原文地址:http://www.cnblogs.com/123jy/p/4439251.html