題目:逆序輸出的數列(第五周)
題目內容:
你的程式會讀入一系列的正整數,預先不知道正整數的數量,一旦讀到-1,就表示輸入結束。然後,按照和輸入相反的順序輸出所讀到的數字,不包括最後標識結束的-1。
輸入格式:一系列正整數,輸入-1表示結束,-1不是輸入的資料的一部分。
輸出格式:按照與輸入相反的順序輸出所有的整數,每個整數後面跟乙個空格以與後面的整數區分,最後的整數後面也有空格。
輸入樣例:1 2 3 4 -1
輸出樣例:4 3 2 1
思路:可以用陣列實現,也可以用指標實現;但是陣列限定了輸入數的長度,且需要連續的記憶體空間。
方法1:(陣列)
#include
#include
int main()
arr[i] = val;
i++;
}while(val != -1);
for(j=i-2; j>=0; j--)
}方法二:(鍊錶)
#include
#include
typedef struct nodenode;
//前置宣告
struct node * create_list(void);
void input(struct node * phead, int val);
void output(struct node * phead);
int main()
}while(val != -1);
//輸出鍊錶,注意頭結點元素不輸出,頭結點內部存放的不是有效值
output(phead);
}//建立鍊錶
struct node * create_list(void)
//給鍊錶新增節點
void input(struct node * phead, int val)
phead->plater = newnode;
newnode->pformer = phead;
newnode->plater = null;
newnode->data = val;}
void output(struct node * phead)
//當前乙個元素不為空時輸出,過濾頭結點
while(phead->pformer != 0)
}
輸出乙個數列的逆序數
1,這個問題演算法導論講歸併排序時,提到過。找到乙個實現 思路還是蠻清晰的。核心 對於兩個有序序列,找逆序對,遍歷一次即可。2,實現 include include using namespace std int inv int data,int n ret j tmp i j data i 不是逆...
逆序對數列
題目描述 對於乙個數列,如果有ia j 那麼我們稱a i 與a j 為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。詢問逆序對數為k的這樣自然數數列到底有多少個。輸入描述 第一行為兩個整數n k。輸出描述 寫入乙個整數,表示符合條件的數列個數,由於這個數可能很...
求數列的逆序數
在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。123 4567 891011 1213 1415 1617 1819 2021 2223 2425 2627 28ll a 500005 tem 50000...