日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分治法求最大最小

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分治法求最大最小 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  分治法的基本思想:是將一個規模為n的原問題分解為k個規模較小的子問題,這些子問題互相獨立且與原問題相同。遞歸地解這些子問題,然后將子問題的解合并為原問題的解。

1 #include<stdio.h> 2 /* 分治法計算最大值和最小值的算法程序,遞歸實現 */ 3 void maxmin2(int d[], int left, int right, int *max, int *min) //數組,頭,尾,最大值,最小值 4 { 5 int max1, min1; 6 //遞歸最小時處理 7 if(left==right) { //如果只有一個數 即使最大也是最小 8 *max = d[left]; 9 *min = d[left]; 10 } else if(left == right-1) { //兩個數,判斷大小 11 if(d[left] > d[right]){ 12 *max = d[left]; 13 *min = d[right]; 14 } else { 15 *max = d[right]; 16 *min = d[left]; 17 } 18 } else { 19 int mid = (left + right) / 2; //二分 20 maxmin2(d, left, mid, &max1, &min1); //處理左端 21 maxmin2(d, mid+1, right, &max1, &min1); //處理右端 22 if(*max < max1) // 先分后治 23 *max = max1; 24 if(*min > min1) 25 *min = min1; 26 } 27 } 28 29 int main() 30 { 31 int d[10] = {0,1,2,3,4,5,6,7,8,9}; 32 int max,min; 33 maxmin2(d,0,9,&max,&min); 34 printf("%d %d",max,min); 35 }

?

轉載于:https://www.cnblogs.com/Dicer/p/8533086.html

總結

以上是生活随笔為你收集整理的分治法求最大最小的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。