פרילנסר אופטימלי - אלגוריטם לקבלת משכורת הכי גבוהה
מקבלים מערך : {"deadline": 1, "payment": 1}, {"deadline": 2, "payment": 1}, {"deadline": 2, "payment": 2} צריך למצוא איך לקבל הכי הרבה כסף, כאשר צריך לעמוד ב deadline
- public class Program {
- public int OptimalFreelancing(Dictionary<string, int>[] jobs) {
- int salary = 0;
- jobs = jobs.OrderByDescending(job => job["payment"]).ToArray();
- bool[] timeline = new bool[7];
- foreach(var job in jobs) {
- int maxTime = Math.Min(job["deadline"], 7);
- for(int time = maxTime - 1; time >=0; time--) {
- if(!timeline[time]) {
- timeline[time] = true;
- salary += job["payment"];
- break;
- }
- }
- }
- return salary;
- }
- }
מריה