①學號姓名排名(用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...