我:
#include using namespace std;
/*n和m 表示的是接水人數 和水龍頭個數
第二行 n個正整數 表示的是 w1,w2……wn 表示i號同學的接水量
輸出只有一行 表示 接水所需的總時間
如:5 3
4 4 2 1
輸出 4
1<=n<=10000,1<=m<=100;
1<=wi<=100.
*/int getminindex(int m, int wm)
} return minw;
}int main() ;//接水量
cin >> n>>m;
for (int i = 1; i <=n; i++)
int maxw = 0;
int wm[105] = ;//1到m個水龍頭分別的接水量
for (int i = 1; i <= n; i++)
else
} for (int i = 1; i <= m; i++) }
cout << maxw << endl;
return 0;
}
大佬:
/*
陣列 w 而言:
下標: 陣列下標去表示每個人的編號
元素值: 表示接水量
w[1] = 5 --> 1 號的接水量是 5
關於陣列 ar
下標: 表示水龍頭的編號
元素值: 去表示該水龍頭上消耗的時間
ar[1] = 4 --> 1 號水龍頭的供水量是 4,即消耗了 4 秒鐘
*/int w[10001] = , ar[101] = ;
int n, m, max = 0;
cin >> n >> m;
// 得到每個人的接水量
for(int i = 1; i <= n; i++)
// 先派 m 個人去接水
for(int i = 1; i <= m; i++)
// 編號 m+1 -- n 的同學在排隊
for(int i = m+1; i <=n; i++)
} // 此時,找出耗時最小的第 k 號水龍,意味著這個水龍頭上會有人補進來
// 第 i 號同學補到第 k 個水龍頭
ar[k] = ar[k] + w[i]; }
for(int i = 1; i <= m; i++)
} cout << max << endl;
總結:對比了下,好像我確實不應該從1開始,應該直接從2開始
int getminindex(int m, int wm)
} return minw;
}
演算法練習題
題目描述 給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前...
演算法練習題4 最長連續序列
力扣 128.最長連續序列 分析 這道題稍微有些難度,雖然一開始也想到了要使用map,但是沒有答案中使用的那麼靈活。這道題的思路是,先遍歷以便陣列,使用set記錄資料並去重 然後再遍歷一遍陣列,這次遍歷中,尋找連續數列的最小起始點,然後計數。更困難的是,最長不連續,該如何實現呢?class solu...
C語言練習題 4
1.讀程式,寫出你的分析步驟,得出結果。typedef int func1 int 定義函式型別,名為func1 typedef int func2 int int int 定義函式型別,名為func2 int inc int a 返回a 1 int multi int a,int b,int c ...