c语言练习75: 速算机器⼈

速算机器⼈

题⽬描述:

⼩扣在秋⽇市集发现了⼀款速算机器⼈。店家对机器⼈说出两个数字(记作 x 和 y),请⼩扣说出计算 指令:

A 运算:使 x = 2 * x + y;

B 运算:使 y = 2 * y + x。

在本次游戏中,店家说出的数字为 x = 1 和 y = 0,⼩扣说出的计算指令记作仅由⼤写字⺟ A、B 组成的 字符串 s,字符串中字符的顺序表⽰计算顺序,请返回最终 x 与 y 的和为多少。

• ⽰例 1:

输⼊:s = AB

输出:4

解释: 经过⼀次 A 运算后,x = 2, y = 0。

再经过⼀次 B 运算,x = 2, y = 2。 最终 x 与 y 之和为 4。

算法思路:

1. 定义两个变量 x 和 y 并初始化为x=1,y=0;

2. 遍历字符串数组,若当前字符为A,执⾏x=2*x+y,否则执⾏y=2*y+x; 3. 返回 x 和 y 的和。

代码:

int calculate(char* s) {
	//定义x和y并初始化
	int x = 1;
	int y = 0;
	//遍历字符串数组,字符串数组指针直接指向字符串⾸位,则遍历时直接获取指针指向的字符,
	while (*s) {
		//判断当前字符,并执⾏相应操作
		if (*s = 'a') {
			x = 2 * x + y;
		}
		else if (*s = 'b') {
			y = 2 * y + x;
		}
		//字符串指针后移,完成遍历操作
		s++;
	}
	//返回操作执⾏完成后的两值之和
	return x + y;
}

你可能感兴趣的:(c语言,算法,数据结构)