王道複試機試(2)

2021-10-03 19:14:22 字數 4105 閱讀 2975

①學號姓名排名(用sort函式)

#include

#include

#include

using

namespace std;

struct student

;student arr[

100]

;bool

compare

(student x,student y)

else

return x.score

}int

main()

sort

(arr,arr+n,compare)

;for

(int i=

0;i++i)

return0;

}

或者可以用運算子過載《的關係。

struct student

};

②輸入10個數字,奇數輸出在前從大到小,偶數輸出在後從小到大。

#include

#include

#include

using

namespace std;

int arr[10]

;bool

compare

(int x,

int y)

else

if(x%2==

0&&y%2==

0)//都是偶數

else

if(x%2==

1&&y%2==

0)//x為奇,y為偶

else

}int

main()

sort

(arr,arr+

10,compare)

;for

(int i=

0;i<

10;i++

) cout<

}return0;

}

2.sort(hdu 1425)

給n個整數,請你按從大到小順序給出前m大的數範圍為數字(-50000,50000),排序後的最後乙個數字跟換行,之前的跟空格。

#include

#include

#include

using

namespace std;

const

int maxn=

1e6+10;

const

int range=

1e5;

int arr[maxn]

;//陣列 1 5 -5

int number[maxn]

;//輔助陣列 50001,50005, 49995

intmain()

int index=0;

for(

int i=

0;i)//開始查詢輔助陣列中的次數

}for

(int i=n-

1;i>=n-m;

--i)

//從大到小所以反著來

3.逆序數對,歸併排序

#include

#include

using

namespace std;

int arr[

100]

;int temp[

100]

;/* 1 2 5 6 7 3 4 7 8 9

l m m+1 r

i j 比較ij所指向的值生成新排序陣列

① 1 (i->[1],j->[0])

② 1 2 (i->[2],j->[0])

③ 1 2 3 (i->[2],j->[1])

④ 1 2 3 4 (i->[2],j->[2])

*/void

combine

(int left,

int middle,

int right)

else

}while

(i<=middle)

//i可能未到頭,把剩下的放進來

while

(j<=right)

for(k=left ;k<=right ;

++k)

//把temp值還給arr

return;}

void

mergesort

(int left,

int right)

return;}

intmain()

mergesort(0

,n-1);

for(

int i=

0;i)printf

("\n");

return0;

}

逆序數

int number;

void

combine

(int left,

int middle,

int right)

else

}

#include

#include

#include

using

namespace std;

int arr[

100]

;int

partition

(int left,

int right)

swap

(arr[left]

,arr[right]);

//直到移動不了,交換值

while

(left

<=arr[right]

)//左邊《右邊 左邊指標移動

swap

(arr[left]

,arr[right]);

//直到移動不了,交換值

}return left;

//left和right一樣的

}void

quicksort

(int left,

int right)

}int

main()

quicksort(0

,n-1);

for(

int i=

0;i++i)

return0;

}

#include

#include

#include

using

namespace std;

int arr[

100]

;int

partition

(int left,

int right)

swap

(arr[left]

,arr[right]);

//直到移動不了,交換值

while

(left

<=arr[right]

)//左邊《右邊 左邊指標移動

swap

(arr[left]

,arr[right]);

//直到移動不了,交換值

}return left;

//left和right一樣的

}int

quicksort

(int left,

int right,

int k)

else

//position大於k值則在左側比他小的區間找k}}

intmain()

int k;

scanf

("%d"

,&k)

;printf

("%d\n"

,quicksort(0

,n-1

,k))

;return0;

}

王道複試機試(7)

1.bfs寬度優先搜尋 include include include using namespace std void bfs int n myqueue.push current 10 myqueue.push current 10 1 int main return0 3的過程應該就是 右為隊...

清華複試機試之進製轉換2

將m進製的數x轉換為n進製的數輸出。輸入的第一行包括兩個整數 m和n 2 m,n 36 下面的一行輸入乙個數x,x是m進製的數,現在要求你將m進製的數x轉換成n進製的數輸出。輸出x的n進製表示的數。示例1 10 2 111011注意輸入時如有字母,則字母為大寫,輸出時如有字母,則字母為小寫。本題中的...

2018 BIT複試機試

1 輸入乙個只含有英文本母的字串,輸出最大回文子串的長度及此長度回文子串的個數 回文不區分大小寫 樣例 輸入abaab 最大回文子串為baab 輸出4 1 輸入abcbbb 最大回文子串為bcb和bbb 輸出 3 2 實際測試樣例 輸入 a b 輸出 1 2 輸入 abcbb 輸出 3 1 輸入 a...