題意:交換乙個陣列的相鄰兩個元素可以達到對陣列排序的功能,類似於氣泡排序,但交換的方案可能不止一種。比如說陣列a為3,2,1,要想排為1,2,3,可以先交換位置1和2的元素(陣列變為2,3,1),然後交換位置2和3的元素(變為2,1,3),最後交換位置1和2的(變為1,2,3),此為方案一,具體可以用1,2,1(數字即每次交換的第乙個數的位置)來描述。當然還可以先交換位置2和3(312),然後交換位置1和2(132)最後交換位置2和3(123),如上的描述方法便是2,1,2,此為方案二。當然這樣的方案是無窮多的,比如1,1,2,1,2同樣可以實現排序,但這種情況下前兩次交換是在做無用功,不是移動次數最小的方案。此題要求出移動次數最少的方案有多少個,如例子中的情況就只有2種方案。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #includeview code8 #include 9 #include 10 #include
11 #include 12 #include 13
using
namespace
std;
14 typedef long
long
ll;15
const
int no = 10000 + 10;16
inta[no];
17int
n, ans;
1819 inline bool
judge()
2026
27int swap( int i, int
j )28
3334
void
dfs()
3541
for( int i = 1; i < n; ++i )
42if( a[i] > a[i+1
] )4348}
4950
intmain()
5162
return0;
63 }
UVa 331 交換的方案數 (回溯法,啟發)
題意 只能交換相鄰的數。要把乙個陣列這樣交換以形成公升序。問最少交換次數的不同交換順序有多少種。思路 還是沒想到,看到別人題解中一句話,茅塞頓開 每次從頭選兩個需要交換的位置進行交換。只有降序才需要交換,而且可以看到每次降序的調換都是有意義的。這樣每次從頭找乙個需要交換的位置,就是不同的方案。當某次...
UVA331求排序過程交換次數最少的種類數
這題估計是d了一天的bug,頭有點暈了,第一發看到過的人挺多的,以為有規律,自以為是的按照規律交了一發,結果wa掉,其實就是模擬氣泡排序遞迴而已 include include include include include include include include include inclu...
SData 優雅的資料交換方案
sdata的 是 資料交換方案可以分為兩類 有綱要 schema 的和無綱要的。有綱要的資料交換方案有google的protocol buffers,microsoft的bond以及sdata,綱要編譯器在編譯時刻把綱要與程式語言進行對映,也就是通過綱要生成程式語言 此類方案是靜態型別化的。無綱要的...