2010-02-27 89 views
1

我有一個向量類型中的幾個元素是從cin中讀取的,然後我對向量執行了一些計算,它的元素順序被改變了。問題是我需要在計算後打印矢量元素的位置。我不知道該怎麼解釋這口井,這就是爲什麼我會舉一個例子:元素在向量中的位置

10 1 100 1000 

和10是第1個要素,1是2,100是第三等的計算後的矢量變化:

100 10 1 1000 

所以我應該打印

3 1 2 4 

因爲100是輸入的第三元件,10是第一等等,等等

我試圖以與陣列[1000](因爲有在輸入超過1000不較大的數字),但它不會工作,因爲可以有多個號碼具有相同值,如:

10 10 10 100 

輸出可以是1 2 3 42 3 1 43 1 2 4等,但在這裏我需要輸出1 2 3 4,因爲它是'最小的'。

我試圖與陣列f[1001]f[10] = 1f[100] = 2f[1] = 3 - 如果從輸入的數字是10 100 1。但如果有多個像10 10 100相同的值,那麼我的想法不起作用。請以任何可能的方式幫助我。

回答

3

聽起來就像你需要存儲的值和初始位置。你應該能夠與結構數組做到這一點:

struct UserInput 
{ 
    unsigned int initialPosition; 
    int userInputValue; 
}; 

int main() 
{ 
    userInput theUserInput[100]; 
    // increment a counter, starting at 1, and place it in 
    // "initialPosition" in the struct as user input is read 
} 

我會留下,其餘由你...因爲它畢竟是功課:)好運氣。

1
  • 如果知道它是什麼,請使用關聯數組。
  • 如果輸入數量有限,則使用線性搜索來確定索引。
  • 考慮使用日誌(或strlen)以變換1,10,100,1000,等成0,1,2,3,等等
0

從你的這樣的示例的描述: 10(3)10(2)10(1)100(4)

我們要輸出爲1 2 3 4,而不是3 2 1 4

所以我不認爲你的要求只是直接打印初始位置。你必須使位置序列儘可能小。

以下是我的解決方案:

使用直接映射哈希表來存儲所有指定元素的初始位置。對同一元素的所有初始位置進行排序。所以如果你想輸出最小的位置序列,你只需要從頭到尾讀取這個指定元素的初始位置。

詳細的實現由您來完成,因爲這是一項家庭作業。