牛牛和妞妞在一天晚上決定一起去看一場情人節演唱會,可是由於這場演唱會實在太出名了,有很多情侶都來**,牛牛和妞妞不小心被**沖散了!
維持秩序的人決定,讓大家排成一列,相鄰兩個進去的人(2k-1和2k,k為正整數)坐在相鄰座位。但是現在的隊伍亂糟糟的,有很多情侶都不在相鄰位置。維持秩序的人同意讓情侶們跟相鄰的人交換位置,直到所有情侶都在2k-1和2k位置上為止。
但是維持秩序的人很沒有耐心,所以需要最少的交換次數,你能幫情侶們算出這個次數嗎?
第一行乙個整數n,表示一共有n對情侶,編號從1到n。同一對情侶編號相同。1<=n<=100
第二行2n個整數ai,表示編號為ai的情侶在第i個位置。1<=ai<=n
乙個整數,代表最少交換次數。
示例1
3
3 3 2 2 1 1
0
示例2
4
1 2 3 4 1 2 3 4
6
要求a[2*k]和a[2*k+1]位置上的編號一樣,而a中所有的編號不排序,求所有的編號相同的值移動到相鄰位置所需要的的最小距離。
1 2 3 4 1 2 3 4,記第二個重複的值為x',於是
1 2 3 4 1『 2』 3『 4』
1的物件1『,1』移動到1的旁邊需要移動三次:
1 2 3 1『 4 2』 3『 4』,1 2 1『 3 4 2』 3『 4』,1 1『 2 3 4 2』 3『 4』,這樣就完成一對,1『向前移動類似插入排序,只要1』的位置沒有到1的右邊,就繼續交換位置,每交換一次位置,記錄交換次數的計數器加1。
直到4對分別成功牽手:11 22 33 44
#includeusing namespace std;
int main()
n *= 2;
for (i = 0; i < n; i=i+2)//i每次移動兩個位置,因為有兩個人坐在一起了,下乙個位置加2
}for (j = l; j != i + 1; --j)//開始讓i的物件乙個乙個挪位置,直到到i的旁邊:插入排序的思想}}
cout << count;
return 0;
}
ps
a. 考慮好起始位置和排序的條件
b. 陣列a最多200個人,少了就ac40%
美妙的遞迴
剛開始接觸遞迴方法時,感覺到這種方法很匪夷所思。很多很複雜的問題短短幾行 就能解決。當時我一直試圖理清程式執行的具體過程,由於對遞迴認識不夠每次都弄的自己很暈。在這裡先不談遞迴程式執行時底層的細節,先舉幾個小例子見識一下遞迴的威力。example1 鍊錶逆序。對鍊錶逆序有很多辦法,如何寫乙個遞迴的函...
美妙的秒殺架構
秒殺程式問題根源在於 海量的請求在爭搶有限的資源,秒殺其實和火車票非常像,都是對有限資源的搶占。這一點和微博不一樣,微博不需要加鎖,是客戶端來拉去,資源是不受限的。首先是要對於架構進行分層,最上面是展示層,其次是站點層,然後是服務層,最後才是資料層。秒殺架構的核心其實 保護資料層,因為在整套秒殺架構...
python getattr的美妙生活
一句話簡介 拿到物件是的該屬性class test age 10 def init self self.name donald staticmethod def return man print getattr test,age print getattr test,10mana a hello w...