贪心法 发工资咯代码C语言
时间: 2024-10-28 21:04:31 浏览: 6
贪心法是一种解决问题的策略,它每次做出当前看起来最优的选择,期望通过局部最优达到全局最优。虽然不是所有问题都适合贪心算法,但它在一些特定场景下可以简化求解过程。
在C语言中,我们可以模拟一个简单的例子,比如给员工发工资。假设有一个数组代表每个员工的工时和每小时的工资率,我们想找到一种最“贪婪”的分配方式,即尽可能地多支付给每个员工最高工资,直到总薪水不超过预算。
```c
#include <stdio.h>
// 定义员工结构体
typedef struct {
int hours; // 工时
double wage_rate; // 每小时工资
} Employee;
// 贪心函数,计算并分配工资
void greedySalaryDistribution(Employee employees[], int numEmployees, double budget) {
double totalPay = 0;
for (int i = 0; i < numEmployees; ++i) {
if (totalPay + employees[i].wage_rate * employees[i].hours <= budget) { // 如果加薪后仍在预算内
totalPay += employees[i].wage_rate * employees[i].hours; // 分配工资
} else { // 否则,停止分配,保持剩余预算
break;
}
}
printf("总薪资分配:%.2f\n", totalPay);
}
int main() {
Employee employees[] = {{20, 15}, {10, 20}, {15, 18}};
int numEmployees = sizeof(employees) / sizeof(employees[0]);
double budget = 400.0; // 总预算
greedySalaryDistribution(employees, numEmployees, budget);
return 0;
}
```
在这个代码示例中,`greedySalaryDistribution` 函数按照员工的工资率从高到低分配工资,直到达到预算限制。
阅读全文