牛吃草问题c语言

玛丽莲梦兔
593次浏览
2021年01月12日 10:33
最佳经验
本文由作者推荐

青山不老教学设计-体罚学生

2021年1月12日发(作者:邢球痕)


Problem G 牛吃草问题
Description
假定某牧场中 公牛每只每天吃3捆草,母牛每只每天吃2捆草,小牛每只每天吃半捆草。
现牧场中有100头牛,每天 消耗100捆草,问此100头牛中公牛、母牛、小牛各几只,请你
编程列出所有可能的情况。
Ouput
分别罗列出公牛、母牛、小牛各几只的所有可能情况。 (数据之间是采用空格,具体的
空格数,你可复制"样例输出")
Sample Input

Sample Output
公牛 母牛 小牛
Case 1: 2 30 68
Case 2: 5 25 70
......
Case 7: 20 0 80
#include
int main()
{








}
Problem 1163 湖泊水深
int i,j,k,x=1;
printf(公牛 母牛 小牛n);
for(i=0;i<=100;i++)



for(j=0;j<=100;j++)


for(k=0;k<=100;k++)
if(i+j+k==100 && 3*i+2*j+0.5*k==100)

printf(,x++,i,j,k);


Description
测量湖泊的水深,湖中各处的水深是不一样的。如图:
0
0
0
0
0

可以给湖面打上格子,测量每个格子的深度。“0”表示地面,数 字1,2,3,4,5表示水
深,单位为m。每一格的大小为5m×5m。
Input < br>有若干种案例。每个案例的第一行是两个int型数m、n,表示湖面所处的位置有m×n
格,0 、0表示结束。接着有m行、n列的数字表示湖面各处水深情况。
Ouput
每种情况输出一行,先输出“Case id:”,id为序号,然后输出湖面的面积和湖的平均
水深。平均水深=总的水深湖面面积即有水的格子数。
Sample Input
5 9
0 0 1 2 2 3 0 0 0
0 2 3 5 5 3 2 0 0
0 1 4 3 4 2 2 1 0
0 0 1 1 0 0 1 1 0
0 0 0 0 0 0 0 0 0
0 0
Sample Output
Case 1:525m×m 2.33m
#include
void main()
{
int a[100][100];
0
2
1
0
0
1
3
4
1
0
2
5
3
1
0
2
5
4
0
0
3
3
2
0
0
0
2
2
1
0
0
0
1
1
0
0
0
0
0
0








int m,i,n,j,count,t=1;
double sum;
while(scanf(,&m,&n)!=EOF)
{
if(m==0 && n==0) break;





count=0; sum=0;











t++;


}


}

for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf(,&a[i][j]);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
if(a[i][j]!=0)
{
sum=sum+a[i][j];
count++;
}

}
printf(×m %.2lfmn,t,count*25,sumcount);














Problem 1326 海量排序………………数构
Description
小明的电脑不断接收到数据,数据有大几百万个,为了让这些数据 有序,请你编程按从
小到大进行排序。
Input
输入有若干种情况,每种情 况一行。每行的第一个数是n(100000<=n<=1000000),接
着是n个整数。
Ouput
对应按从小到大输出n个数。每行100个数,多出换行。
Sample Input
3 0 7 4
10 3 4 -9 0 4 5 4 2 9 23
Sample Output
0 4 7
-9 0 2 3 4 4 4 5 9 23

Hint
实际上的数的个数有:100000~1000000个
#include
#include

#define TRUE 1
#define FALSE 0

int r[1000001];


void sift(int r[], int k, int m)
* 假设r[k..m]是以r[k]为根的完全二叉树, 且分别以r[2k]和r[2k+1]为根的左、右子
树为大根堆,调整r[k],使整个序列r[k. .m]满足堆的性质 *
{























}

void crt_heap(int r[], int length )
int t;
int i,j;
int x;
int finished;
t= r[k]; * 暂存根记录r[k] *
x=r[k];
i=k;
j=2*i;
finished=FALSE;
while( j<=m && !finished )
{










}
r[i] =t; * r[k]填入到恰当的位置 *
if (j j=j+1; * 若存在右子树,且右子树根的关键字大,则沿右分支筛选
if ( x>= r[j])
finished=TRUE; * 筛选完毕 *
else
{



r[i] = r[j];
i=j;
j=2*i;
} * 继续筛选 *


*对记录数组r建堆,length为数组的长度*
{
int i,n;
n= length;


}

void HeapSort(int r[],int length)
* 对r[1..n]进行堆排序,执行本算法后,r中记录按关键字由大到小有序排列 *
{











int i,n;
int b;
crt_heap(r, length);
n= length;
for ( i=n i>= 2; --i)
{




}
b=r[1]; * 将堆顶记录和堆中的最后一个记录互换 *
r[1]= r[i];
r[i]=b;
sift(r,1,i-1); * 进行调整,使r[1..i-1]变成堆 *
for ( i=n2; i >= 1; --i) * 自第[n2]个记录开始进行筛选建堆 *
sift(r,i,n);
} * HeapSort *


void main()
{


int len;
int i;



















freopen(
freopen(< br>while(scanf(,&len)!=EOF)
{










}

}Problem 1096 折半查找
for(i=1;i<=len;i++)
scanf(,&r[i]);
HeapSort(r,len);
for(i=1;i<=len;i++)
{



}
printf();
printf(,r[i]);
if(i%100==0)
printf();
Description
有n个整数按由大到小顺序存放 在一个数组中,输入一个数,要求用折半查找法找出该
数是数组中第几个元素的值。如果该数不在数组中 ,则输出“无此数”。假设数组的下标是
从1开始。
Input
输入有若干种 情况,每种情况的第一行有两个数n、num。n是正整数,表示数组有n
个数(n<=100),nu m表示要找的数。第二行是n个由大到小排序好的数。
Ouput
如果查到就输出该数所在的位置,查不到就输出“无此数”。每一种情况先输出
“Case id: ”。id是序号。


Sample Input
5 90
100 90 89 70 60
6 77
66 65 64 63 62 61
1 0
6

Sample Output
Case 1: 2
Case 2: 无此数
Case 3: 无此数
#include
void main()
{
















int i,x,n,mid,a[100],L,R,num=1;
while(scanf(,&n,&x)!=EOF)
{













for(i=0;i scanf(,&a[i]);
L=0;
R=n-1;
mid=(n-1)2;
while(L<=R)
{






mid=(L+R)2;
if(x==a[mid])
break;
if(x>a[mid])
R=mid-1;
else


















}

}
L=mid+1;
if(L<=R)
printf(,num,mid+1);
else
printf(无此数n,num);
num++;
printf();
}Problem 1313 有向图的入度与出度………………数构
Description
下列课程的选修先后关系可以用有向图表示。

请你编程求有向图的入度与出度。
Input
输入有多种情况,每种情况的第一 行有两个整数m、n(0<=m、n<100),m表示图中的
顶点数,n表示弧的个数。接着有n行每 行两个正整数v1、v2表示从顶点v1到v2有一条
弧连接。顶点的序号从1开始。
Ouput
输出每个顶点的入度与出度。格式见样例。
Sample Input


9 11
1 3
1 8
2 3
2 4
2 5
3 4
4 6
5 6
4 7
8 9
9 7

6 8
1 2
1 3
1 4
4 5
3 5
6 4
6 5
3 2



Sample Output
Case 1:
C1 0 --2
C2 0--3
C3 2--1
C4 2--2
C5 1-- 1
C6 2--0
C7 2--0
C8 1--1
C9 1--1
Case 2:
C1 0--3
C2 2--0
C3 1--2
C4 2--1
C5 3--0


C6 0--2
#include
#include
int main()
{



















}
Problem 1062 牛郎织女的命运
Description
int m,n;
int a[100],b[100];
int v1,v2,i;
int count = 0;
while(scanf(,&m,&n)!=EOF)
{











}
return 0;
count++;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
while(n--)
{


}
printf(,count);
for(i = 1; i <= m; i++)
printf(,i,b[i],a[i]);
scanf(,&v1,&v2);
a[v1]++; b[v2]++;


玉皇大帝今年把牛郎、织女分别放在有24层的满二叉树的不同结点中,七七那天,他
们可以向 上去相会。给的规则是:他们可以互相知道对方的位置;他们要算出离最近的相会
点(最近公共祖先)的 路径才可以出发。请你编程帮助他们。

Input
输入有若干种情况。每种 情况一行,每行有两个用空格隔开的整数代表牛郎和织女所处
的结点位置。
Ouput
对每一种情况输出一行。每一行是两个整数代表他们离最近的相会点的路径数。
Sample Input
2 3
10 6
8 30
2 8

Sample Output
1 1
3 2
3 4
0 2

Hint


牛郎和织女都只能往上走或原地不动。
#include
void main()
{








int n,m,i,j,i1,j1;
while(scanf(,&i,&j)!=EOF)
{










i1=0;j1=0;
while(i!=j)
{
if(i>j)
{
i=i2;











}
if(j>i)
{
i1++;
j=j2;







}






}






j1++;
}

}

printf(,i1,j1);

网络搞笑名字-次第造句


绵绵不绝-心如止水鉴常明


禄来相机-枯树前头万木春


李玉刚哪里人-爱祖国的诗


中国服装品牌大全-投入


祖庙-琴棋书画的棋


放河灯的意义-大连棒棰岛


高中三角函数公式-负责任