{ double
sum
=
num[0]
+
(double)num[1]
/
num[2]
+
(double)(num[3]*100+num[4]*10+num[5])/(num[6]*100+num[7]*10+num[8]); if(sum == 10) {
ans ++; } }
void dfs(int index) {
if(index == 9) {
Solve(); return ; }
for(int i = 1 ; i < 10 ; i ++) {
if(!visit[i]) {
visit[i] = true; num[index] = i; dfs(index+1); visit[i] = false; }
} }
int main() {
dfs(0);
printf(\ return 0; }
第四题
快速排序
排序在各种场合经常被用到。 快速排序是十分常用的高效率的算法。
其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子,
以保证:其左边的元素都不大于它,其右边的元素都不小于它。
这样,排序问题就被分割为两个子区间。 再分别对子区间排序就可以了。
下面的代码是一种实现,请分析并填写划线部分缺少的代码。
#include
void s a[], int i, int j) { }
int partition(int a[], int p, int r) {
int i = p; int j = r + 1; int x = a[p]; while(1){
while(i
______________________; int t = a[i]; a[i] = a[j]; a[j] = t;
return j;
}
void quicksort(int a[], int p, int r) {
if(p int q = partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); } } int main() { } int i; int a[] = {5,13,6,24,2,8,19,27,6,12,1,17}; int N = 12; quicksort(a, 0, N-1); for(i=0; i
相关推荐: