c语言百马百担的while
时间: 2023-11-27 08:02:24 浏览: 42
以下是C语言百马百担的while循环实现方法:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int Bh = 3, Mh = 2;
int a = 1, b = 1, c = 1;
double Lh = 0.5;
while (a <= 33)
{
b = 1;
while (b <= 50)
{
c = 100 - a - b;
if (((a*Bh) + (b*Mh) + (c*Lh)) == 100)
{
printf("大马有%d只,中马有%d只,小马有%d只\n", a, b, c);
}
b++;
}
a++;
}
system("pause");
return 0;
}
```
相关问题
c语言解决百马百担问题
百马百担问题是一个数学问题,而且是一个非常有名的问题。它的描述是这样的:有100匹马和100个担子,需要把这100个担子运到100里外的地方。每匹马只能负责一个担子,每个担子也只能由一匹马拉。但是,每匹马的负重能力不同,有些马可以拉更多的担子,有些只能拉1个担子。现在的问题是,如何安排马和担子,使得所有的担子都能被运到目的地,同时最少需要多少匹马?
这个问题可以用c语言来解决。一种简单但不一定最优的解法是使用贪心算法。具体步骤如下:
1. 将马按照负重能力从小到大排序。
2. 将担子按照重量从大到小排序。
3. 依次将每个担子分配给能够拉它的最轻的马。
4. 如果有多个马可以拉一个担子,则选择最轻的那匹马。
这个算法的时间复杂度是O(nlogn),其中n是马和担子的数量。实际应用中可能还需要考虑其他因素,比如马的数量限制、担子数量限制等等。
百马百担c语言编程答案
百马百担问题是一个经典的数学问题,需要计算100匹马驮100担货的所有可能的驮法。以下是两个C语言编程答案:
答案1:
```c
#include <stdio.h>
int main() {
int a,b,c,sum;
for (a=0;a<=33;a++) {
for(b=50;b>=0;b--) {
c=100-a-b;
if (c%2!=0) continue;
sum=3*a+2*b+c/2;
if(sum==100) printf("%d,%d,%d\n",a,b,c);
}
}
return 0;
}
```
答案2:
```c
#include <stdio.h>
int main() {
int a, b, c;
for (int a = 0; a <34 ; a++) { //大马
for (int b = 0; b < 51; b++) { //中马
for (int c = 0; c < 201; c++) { //小马
if (a + b + c == 100 && 3 * a + 2 * b + 0.5 * c == 100) { //满足条件时
printf("大马:%d 小马:%d 中马:%d\n",a,b,c);
}
}
}
}
return 0;
}
```
这两个答案都使用了嵌套循环来枚举所有可能的驮法,其中第一个答案使用了一些优化来减少循环次数。第二个答案则直接依次累加得出。需要注意的是,小马的数量必须为偶数才能实现每两匹马驮一担。