阴阳相易


私信TA

用户名:gouchao

访问量:19321

签 名:

楼上小心你的分数了,我即将爆掉你的菊花

等  级
排  名 221
经  验 6331
参赛次数 2
文章发表 18
年  龄 0
在职情况 待业
学  校
专  业

  自我简介:

解题思路:
根据题目:

        x站后车上的人数 = (x-1)站后车上的人数 + x 站上车人数 - x站下车人数

构造三个函数:

int shangche(int a,int n,int dier,int x);
int xiache(int a,int n,int dier,int x);
int zaicheshang(int a,int n,int dier,int x);

注意事项:


此题的关键点,在于不知道第二站上下车的人数

但是知道了最后一站下车的人数是 m

所以需要根据 m 的值,计算出 第二站上下的人数


参考代码:

#include <stdio.h>

int shangche(int a,int n,int dier,int x);
int xiache(int a,int n,int dier,int x);
int zaicheshang(int a,int n,int dier,int x);

int main(void){
	int a,n,m,x;
	scanf("%d%d%d%d",&a,&n,&m,&x);
	int i;        //用 i 表示 第二站上车的人数
	for(i = 1;;i++){
		if(m == zaicheshang(a,n,i,n-1)) {
			printf("%d",zaicheshang(a,n,i,x));
		}else if( m < zaicheshang(a,n,i,n-1) ) {
		        break;
		}
	}
	return 0;
}

int xiache(int a,int n,int dier,int x){
	int xia;
	if(x > 2 && x < n){
		xia = shangche(a,n,dier,x-1);
	}else if(x == 2){
		xia = dier;
	}else if(x == 1){
		xia = 0;
	}if(x == n) xia = zaicheshang(a,n,dier,x-1);
	return xia;
}

int shangche(int a,int n,int dier,int x){
	int shang;
	if(x >2 && x<n){
		shang = shangche(a,n,dier,x-1) + shangche(a,n,dier,x-2);
	}else if(x == 2){
		shang = dier;
	}else if(x == 1){
		shang = a;
	}else if(x == n){
		shang = 0;
	}
	return shang;
}

int zaicheshang(int a,int n,int dier,int x){
	int sum;
	if(x == 1) sum = a;
	else if(x <= n){
		sum = zaicheshang(a,n,dier,x-1) + shangche(a,n,dier,x) - xiache(a,n,dier,x);
	}
	return sum;
}


 

0.0分

0 人评分

  评论区

  • «
  • »