(北化OJ)線性表壓縮

2021-07-10 16:26:55 字數 895 閱讀 8988

將乙個含有零元的線性表中的零元刪除,其他非零元的相對順序不變,稱為線性表的壓縮。每乙個非零元壓縮後的新下標與原下標之差乘以元素值稱為壓縮代價。編寫程式對線性表進行壓縮,並計算所有非零元的壓縮代價的總和。

輸入的第一行為測試用例數m,0<m≤100。從第二行開始,每行為乙個測試用例。每個測試用例為一組空格隔開的整數,第乙個整數為線性表的表長n,0≤m≤100,其後的n個整數為線性表中的元素值,元素值不小於0,不大於1000。

對每個測試用例,先輸出壓縮總代價,接著輸出壓縮後的線性表的表長,然後輸出壓縮後的線性表的內容,每個數值中間用空格隔開。

25 744 199 0 160 04 12 0 0 16

160 3 744 199 16032 2 12 16

**如下:

#includeusing namespace std;

long long int cost = 0;

int length;

void delete(int list)

}length--;

}if (list[i] == 0)

}}int main()

delete(list);

cout << cost << " ";

if (length != 0)

cout << list[length - 1];

}else

cout << endl;

cost = 0;

length = 0;

list= 0;

}return 0;

}

主要功能實現是在delete函式裡面,簡單的線性表刪除元素,但要注意的是再刪除乙個元素後,要判斷往前移的元素是否也是0,如果是,則進行遞迴將其一起刪除,之後同理。

DS 線性表壓縮

題目描述 將乙個含有零元的線性表中的零元刪除,其他非零元的相對順序不變,稱為線性表的壓縮。每乙個非零元壓縮後的新下標與原下標之差乘以元素值稱為壓縮代價。編寫程式對線性表進行壓縮,並計算所有非零元的壓縮代價的總和。輸入輸入的第一行為測試用例數m,0 m 100。從第二行開始,每行為乙個測試用例。每個測...

利用線性表壓縮稀疏矩陣

稀疏矩陣,就是矩陣中的大多數元素為0,只有少量的非0元素。對於這種矩陣,直接儲存就有點浪費空間了,更好的辦法就是定義乙個結構體,結構體中的3個成員對應於非0元素的位置以及非0元素的值。然後在加上一些附加的資訊,比如矩陣的大小 非0元素的個數等等。聽起來挺簡單的,但是寫起來還是挺複雜的 include...

線性表的初始化

初始化就是建立乙個空線性表,那直接把長度置為0就行了 include define ok 1 define error 0 define true 1 define false 0 define maxsize 20 儲存空間初始分配量 typedef int elemtype elemtype型別...