題意
給出一段含有n個數的序列a,可以對其中任何數加一,問最少操作多少次讓序列中的每一個數和序列和都不為0。
輸入說明
每一個測驗有多組測驗資料。
第一行包含一個測驗資料次數t,這說明了后面有多少組樣例。
每個樣例輸入的第一行為一個整數n,這個序列a元素的個數。
接下來第二行包含n個數,分別為 a1,a2…an
輸出說明
對于每一個樣例,輸出最少的操作次數
uj5u.com熱心網友回復:
思路:遍歷序列,統計為0的元素個數cnt(因為為0肯定要進行+1操作),并求出序列的總和sum,然后判斷為0的個數cnt+總和sum是否為0,如果不為0,則說明操作cnt次就可以了,否則,就要操作cnt+1次int main() {
int t, n, i, j, cnt, sum=0;
cin>>t;
while (t--) {
cin>>n;
cnt = 0;
for(i=0; i<n; i++) {
cin>>j;
sum += j;
if (j==0) cnt++; //有多少個為0的元素,就要操作多少次+1
}
if (sum+cnt==0) cnt++; //如果把0的元素都+1后造成總和不為0,則對之前為0的任意元素追加一次+1操作
cout<<cnt<<endl;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/162054.html
標籤:新手樂園
