逆序對問題
簡介:先對字串做乙個部分翻轉,求得翻轉結果裡逆序串的個數(兩個數字之前前面數字比後邊大,組成乙個逆序串,如3,2,1中,3,1;2,1,分別是兩個逆序串)。
用例:第一行n:2 //表示目標資料個數為2^n個
第二行:2 1 4 3//表示這個長度為4的資料串的各個值
第三行:4 //做4次變換
第四行:1 2 0 2 //每次的變換空間大小
輸出:0 //輸入2,1,4,3,以2^1為步長,變換為1,2,3,4,完全順序排列逆序對個數為0。
6//輸入1,2,3,4 以2^2為步長,變換為4,3,2,1,完全順序排列逆序對個數為6。
6//輸入4,3,2,1 以2^0為步長,變換為4,3,2,1,完全順序排列逆序對個數為6。
0//輸入4,3,2,1 以2^2為步長,變換為1,2,3,4,完全順序排列逆序對個數為6。
輸入:2
2 1 4 3
41 2 0 2
輸出:066
0思路也比較簡潔,畢竟筆試沒太多時間想精巧方法。
第一步先翻轉,用到了乙個抑或交換兩數的技巧
第二步計數逆序對,我感覺這塊自己做的不太好,也因為這裡超時了,只過了50%用例。有興趣的朋友可以給提點改進意見,但是整理來說比較容易看懂。
#includeusing namespace std;
void reverse(int targetsize, int * target, int step)
}int countnxd(int datasize,int *data)
} return ret;
}int main()
int datasize = pow(2,n);
int * data= new int [datasize];
for (int i = 0; i < datasize; i++)
int m;
cin >> m;
int *test = new int[m];
for (int i = 0; i < m; i++)
for (int i = 0; i < m; i++)
deletedata;
deletetest;
return 0;
}
2016騰訊測試開發崗筆試程式設計第一題
題目 在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 gray code 請編寫乙個函式,使用遞迴方法生成 n位的格雷碼,並且保證這個函式的健壯性。思路 首先格雷碼有這樣的乙個特點就是更多一位的格雷碼是在前一位格雷碼前面加上0和1的,舉個例子就是1位的格雷碼有0和1...
20190405騰訊後端開發崗筆試程式設計題
第一題 題目大意是 有很多種錢幣,每種可以無限用,然後給定乙個m,需要用這些錢幣來湊從1到m的數值的金額 感覺像數字dp,當時沒做出來,includeusing namespace std int a 101 int m,n int num int x return ans int main if ...
騰訊測試開發崗實習面試(流水賬)
恩.很久沒有更博,這次的博文就記錄一下我最近最主要的乙個經歷吧。先說真的是運氣好躋身鵝廠的實習生大軍,最主要的感受就是大家都要勇於嘗試,不要覺得bat這種大公司很難很難 其實在幾個月前我也是這麼認為的.其實可能還沒有有些小點的公司難。下面進入正題吧 網申從開學開始陸陸續續投了好幾家,不過都沒有什麼音...