乐山师院程序竞赛部分题解

下面有当时的代码,最后一个题花了点时间,前面都是水题,竞赛网址:http://acm.lsnu.edu.cn/oj/

B:
#include<stdio.h>
int main()
{
	int a[11][11];
	int i,j,n;
	scanf("%d",&n);
	
	for(i=0;i<n;i++)
	{
		a[i][0]=1;
		a[0][i]=1;
	}
	for(i=1;i<n;i++)
		for(j=1;j<n;j++)
		{
			a[i][j]=a[i-1][j]+a[i][j-1];
		}
		printf("%d\n",a[n-1][n-1]);
		return 0;
}
C:
#include<stdio.h>
int main()
{
	char a[105],b[205];
	int i,j;
	scanf("%s",a);
	for(i=0,j=0;i<105;i++)
	{
		if(a[i]=='\0')break;
		if(a[i]=='A'||a[i]=='a'||a[i]=='O'||a[i]=='o'||a[i]=='Y'||a[i]=='y'||a[i]=='E'||a[i]=='e'||a[i]=='U'||a[i]=='u'||a[i]=='I'||a[i]=='i')
			continue;
		else 
		{
			if(a[i]<'a')a[i]=a[i]+32;
			b[j+1]=a[i];
			b[j]='.';
			j=j+2;
		}
	}
	b[j]='\0';
	for(i=0;b[i]!='\0';i++)
	{
		printf("%c",b[i]);
	}
	printf("\n");
	return 0;
}
D:
#include<stdio.h>
int main()
{
	int i=5,j,k,x;
	scanf("%d",&x);
	if(x>=i)
	{
		k=x%i;
		if(k)
		printf("%d\n",(x-k)/i+1);
		else printf("%d\n",(x-k)/i);
	}
	else printf("1\n");
}
H:
#include<stdio.h>
int main()
{
	float A=0,B=0,C=0,A1,B1,C1;
	int x,y,z,i;
	char c;
	scanf("%d %d %d",&x,&y,&z);
	for(i=0;i<x;i++)
	{
		scanf("%f",&A1);
		A+=A1;
	}
	c=getchar();
	for(i=0;i<y;i++)
	{
		scanf("%f",&B1);
		B+=B1;
	}
	for(i=0;i<z;i++)
	{
		scanf("%f",&C1);
		C+=C1;
	}
	
	if(A>=B&&A>=C)printf("A\n");
	else if(B>A&&B>=C)printf("B\n");
	else if(C>A&&C>B)printf("C\n");
	return 0;
}
G:
#include<stdio.h>
int a[2][10005];//定义一个二维数组,第一排是每个区间开始,第二排是结尾
int main()
{
	int i,n,j,k,t;
	scanf("%d",&n);
	for(i=0;i<n;i++)//按每个区间起始大小排序
	{
		scanf("%d %d",&a[0][i],&a[1][i]);
	}
	for(i=0;i<n;i++)
	{
		k=i;
		for(j=i+1;j<n;j++)
		if(a[0][k]>a[0][j])k=j;
		if(k!=i)
		{
			t=a[0][k];
			a[0][k]=a[0][i];
			a[0][i]=t;
			t=a[1][k];
			a[1][k]=a[1][i];
			a[1][i]=t;
		}
	}
	
	for(i=1;i<n;i++)//比较相邻的两区间,是相交还是包容,如果是两种之一就将上一个位置变为-1,否则不动,循环下一个
	{
		if(a[0][i]<=a[1][i-1])
		{
			if(a[1][i]<=a[1][i-1])
			{
				a[0][i]=a[0][i-1];
				a[1][i]=a[1][i-1];
                a[0][i-1]=-1;
				a[1][i-1]=-1;
			}
			else 
			{
				a[0][i]=a[0][i-1];
				a[0][i-1]=-1;
				a[1][i-1]=-1;
			}
		}
	}
	for(i=0;i<n;i++)
	{
		if(a[0][i]>=0)
			printf("%d %d\n",a[0][i],a[1][i]);
	}
	return 0;
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值