C 螺釘和螺母問題

2021-09-28 02:00:15 字數 1715 閱讀 8219

做題時,遇到了這個問題,順手記錄一下。(~ ̄▽ ̄)~

問題描述

假設我們有n個直徑各不相同的螺釘以及n個相應的螺母。我們一次只能比較一對螺釘和螺母,來判斷螺母是大於螺釘 、小於螺釘還是正好適合螺釘。然而,我們不能拿兩個螺母作比較,也不能拿兩個螺釘作比較。我們的問題是要找到每一對匹配的螺釘和螺母。為該問題設計乙個演算法,它的平均效率必須屬於集合θ(nlogn)。

思路

這個問題比較迷惑的地方就是螺母之間、螺釘之間不能比較。但說真的,螺釘是與螺母是相互對應的,螺釘與螺母比實際上就可以看做是螺母之間在比。nlogn又讓人想到快排,很明顯這就是是兩組快排。

從螺釘中選出乙個,對螺母們進行劃分成三部分,比這個螺釘小的、大的和相等的。

取出第一步相等的螺母,對螺釘們進行相同的劃分。

對小的部分,和大的部分,進行遞迴操作。

**

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace zexercise

static

intsort

(ref

int[

] a,

refint i,

refint j,

int pivot)

while

(a[j]

> pivot)

swap

(ref a, i, j);}

i++; j--

;return a[i -1]

;}static

void

match

(ref

int[

] nuts,

refint

bolts,

int low ,

int high)

if(j > low)

}static

void

show

(int

a,int len)

console.

writeline(""

);}static

void

main

(string

args)

;int

bolts =

;match

(ref nuts,

ref bolts,0,

9); console.

writeline

("nuts:");

show

(nuts,10)

;

console.

writeline

("bolts:");

show

(bolts,10)

; console.

readkey()

;}}}

執行結果

水平有限,如有錯誤,請多包涵 (〃『▽』〃)

螺釘螺母的匹配問題

螺釘螺母的匹配問題 很早之前就看到一道關於螺釘螺母的acm題目的。最近又看了 分治法 的思想,於是強迫自己去把這個 寫出來!題目如下 給你一堆螺母和螺帽,每個螺母都有乙個相對應的螺帽,但是他們之間的對應關係已經打亂。你可以比較螺母和螺帽的大小關係,但是你無法比較螺母和螺母的大小關係,你也無法比較螺帽...

演算法 螺絲螺母問題

給你一堆螺母和螺帽,每個螺母都有乙個相對應的螺帽,但是他們之間的對應關係已經打亂。你可以比較螺母和螺帽的大小關係,但是你無法比較螺母和螺母的大小關係,你也無法比較螺帽和螺帽的大小關係。設計乙個演算法,找出螺母和螺帽的對應關係。include include using namespace std v...

分治演算法求螺絲螺母匹配問題

有個大小不同的螺絲和與之匹配的n個螺母,你可以嘗試乙個螺絲和乙個螺母是否匹配,嘗試結果有三種 1 螺絲太大 2 匹配成功 3 螺母太大.請設計乙個分治演算法完成所有螺絲和螺母的匹配 邊界條件 當只有乙個螺絲和乙個螺母時,匹配螺絲和螺母。divide 在杯子集合中隨機選擇乙個螺絲x,將x與所有螺母進行...