ZZULIOJ 1110: 最近共同祖先(函数专题)
生活随笔
收集整理的這篇文章主要介紹了
ZZULIOJ 1110: 最近共同祖先(函数专题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近共同祖先(函數專題)
如上圖所示,由正整數1, 2, 3, …組成了一棵無限大的二叉樹。從某一個結點到根結
點(編號是1 的結點)都有一條唯一的路徑,比如從10 到根結點的路徑是(10, 5, 2, 1),
從4 到根結點的路徑是(4, 2, 1),從該結點到根結點的路徑上的所有結點稱為該結點的祖先。現在的問題就是,給定x 和y,求x和y的最近共同祖先,比如,10和4最近共同祖先是2,10和5的最近共同祖先是5。
定義遞歸函數
int common(int x, int y)
{
如果x==y, return x;
如果x>y,求x/2與y的共同祖先;
否則,求x與y/2的共同祖先;
}
輸入
輸入只有一行,包括兩個正整數x 和y,這兩個正整數都不大于1000。
輸出
輸出只有一個正整數,即x和y的最近共同祖先。
樣例輸入 Copy
10 4
樣例輸出 Copy
2
#include<stdio.h> int common(int x,int y) {if(x==y)return x;if(x>y)return common(x/2,y);return common(x,y/2); } int main() {int m,n;scanf("%d%d",&m,&n);printf("%d\n",common(m,n));return 0; }
總結
以上是生活随笔為你收集整理的ZZULIOJ 1110: 最近共同祖先(函数专题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库后台命令备份_使用MyS
- 下一篇: java多线程模拟实现12306售票