这个程序怎么写,求教。

rng_nb 2017-12-16 07:20:07
1. 小明爱上了玩魔兽世界,想购买一些游戏装备来提升属性,于是小明设计了两个作弊器,可以通过投入x (x>=0)个魔法币产生更多的魔法币。
作弊器1: 如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币。
作弊器2: 如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币。
2. 假定小明采购装备总共需要n个魔法币,并且小明一开始没有一个魔法币(x=0),请帮助小明设计一个投入方案,使他通过使用两台作弊器恰好产生n个魔法币。
3. 本题要求使用递归算法,请自行设计递归函数,并写出完整C语言程序。
4. 本题不能使用数组和指针,否则视为0分处理
输入与输出说明:
第一行:正整数n(1 ≤ n ≤ 1000),表示小明需要的魔法币数量。
第二行:输出一个只包含字符1和2的字符串,每个字符表示该次选取的作弊器编号。例如122代表第一次用作弊器1,投入0个得到1个,第二次用作弊器2,投入1个得到4个,第三次用作弊器2,投入4个得到10个。
程序运行效果:
Sample 1:
10
122
Sample 2:
11
211
...全文
141 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wodexiaojidan 2017-12-16
  • 打赏
  • 举报
回复

#include <stdio.h>

void GetCoins(int n)
{
	if(n == 1){
		printf("1");
		return;
	}

	if(n == 2){
		printf("2");
		return;
	}

	if(n % 2){
		GetCoins((n - 1) / 2);
		printf("1");
	}else{
		GetCoins((n - 2) / 2);
		printf("2");
	}
}

int main(void)
{
	int n;
	scanf("%d", &n);

	GetCoins(n);
	printf("\n");

	return 0;
}
下面这个对的
wodexiaojidan 2017-12-16
  • 打赏
  • 举报
回复
#include <stdio.h>

void GetCoins(int n)
{
	if(n == 1){
		printf("1");
		return;
	}

	if(n == 2){
		printf("2");
		return;
	}

	GetCoins(n / 2);

	if(n % 2){
		printf("1");
	}else{
		printf("2");
	}
}

int main(void)
{
	int n;
	scanf("%d", &n);

	GetCoins(n);
	printf("\n");

	return 0;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧