c语言分配飞机10个座位,leetcode1227(飞机座位分配)--C语言实现
對于第一個乘客來說 他有三種選擇
坐在正確的(自己的位置), 那么后面的乘客都不會亂,所以第n個乘客可以坐到自己的位置, 1/n * 1.
坐在第n個乘客的位置,那么第n個乘客肯定無法坐到自己的位置, 1/n * 0.
坐在[1,n-1]之間的某個位置K.
對于第K個乘客而言,自己的位置K已經被乘客1給占了,而[2,K-1]的乘客先于K乘客 上飛機,能找到自己的位置并坐下,所以當K乘客上飛機時,留給他的選擇是
第1個座位,以及[K+1,n]的座位。
此時K乘客同樣有3個選擇,
如果他坐在正確的座位,那么后面的乘客都不會亂,第n個乘客可以坐到自己的位置,
只不過此時對于K乘客而言,正確的座位就是座位1。
坐在第n個乘客的位置,那么第n個乘客肯定無法坐到自己的位置
坐在[K+1,n-1]之間的某個位置。
可以發現對于第一個乘客和第K個乘客,他們面臨的選擇是一樣的,只不過問題的規模不一樣。第K個乘客時,問題的規模只有n-K+1. (為何, 上面已經解釋過了,對于第K個乘客而言,自己的位置K已經被乘客1給占了,而[2,K-1]的乘客先于K乘客 上飛機,能找到自己的位置并坐下)。
所以此題公式為
p[1] = 1.0;
p[2] = 0.5;
p[3] = 1/3 + p[2]/3 = 0.5;
p[4] = 1/4 + p[2]/4 + p[3]/4 = 0.5
p[n] = 1/n + p[2]/n + ..... + p[n-1]/n
np[n] = 1+p[2]+p[3]+......+p[n-1];
(n+1)p[n+1]=1+p[2]+p[3]+......+p[n]
(n+1)p[n+1]-np[n]=p[n];
p[n+1]=p[n];(n>=2)
所以:
p[n]=1(n=1)
p[n]=0.5(n=2,3,4,5,...)
總結
以上是生活随笔為你收集整理的c语言分配飞机10个座位,leetcode1227(飞机座位分配)--C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android显示服务器端文件夹,And
- 下一篇: mysql一共有多少引擎_MySQL存储