Toggle navigation
Courses
Questions
Tags
Users
AC 20170105 期末 第一題
0
like
0
dislike
909
views
Maximum heap
請根據以下步驟完成這個作業:
宣高函數 int N(int array[10000],int n)
執行以下動作
如果array[n]不等於0的話,就回傳1+N(array, (n+1)*2-1)+N(array, (n+1)*2)。
如果array[n]等於0的話就回傳0。
宣告函數void insert(int array[10000], int n,int j)
執行以下動作
如果array[j]等於0的話,就作array[j]=n,然後結束函數。
如果 array[j]小於n的話,就交換array[j]跟n。
如果N(array,(j+1)*2-1)大於N(array,(j+1)*2),就呼叫insert(array,n,(j+1)*2)。
如果N(array,(j+1)*2-1)小於等於N(array,(j+1)*2),就呼叫insert(array,n,(j+1)*2-1)。
宣告函數 int Delete(int array[10000], int n)
執行以下動作
如果 a[n] 等於 0 ,就結束函數
令變數temp=array[n]。
如果array[(n+1)*2-1]大於等於array[(n+1)*2],就執行array[n]=Delete(array,(n+1)*2-1)。
如果array[(n+1)*2-1]小於array[(n+1)*2],就執行array[n]=Delete(array,(n+1)*2)。
回傳temp。
宣告函數 int main()
函數做以下動作
宣告一個陣列 int array[10000]={0}。
亂數產生一個變數 n(n>0)。
呼叫 insert(array,n,0)。
重複步驟B跟步驟C十次。
執行temp=delete(array,0),並印出temp的值。
如果temp不等於0就回到步驟E。
[Exercise]
Essay (Open question)
-
asked
Jan 5, 2017
in
2016-1 程式設計(一)AC
by
Shun-Po
(
18k
points)
ID: 20974 -
Available when:
Unlimited
-
Due to:
Unlimited
reshown
Jan 5, 2017
by
Shun-Po
|
909
views
comment
Please
log in
or
register
to add a comment.
16
Answers
0
like
0
dislike
Hidden content!#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int N(int array[10000],int N)
{
** * * * * * * * * *** *** **
* * * * * * * ** * * * * ** * * * ** * * *** * * * 1+N(array,(n+1)*2-1)+N(array,(n+1)*2);
** * * * ***** ** * ** * if(array[n]==0)