C++ 蓝桥杯之 FJ的字符串

试题 基础练习 FJ的字符串

  • 资源限制

       时间限制:1.0s   内存限制:512.0MB

  • 问题描述

  FJ在沙盘上写了这样一些字符串:
  A1 = “A”
  A2 = “ABA”
  A3 = “ABACABA”
  A4 = “ABACABADABACABA”
  … …
  你能找出其中的规律并写所有的数列AN吗?

  • 输入格式

  仅有一个数:N ≤ 26。

  • 输出格式

  请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。

  • 样例输入

3

  • 样例输出

        ABACABA

  • 方法一:递归函数求解;

  • 思路:

看到这种有规律的字符串或者数字,首先我们想到的是用递归的方法求解;但要注意递归的方法不适用于递归数目很多的地方,对于此处N <= 26还是可以接受的。

  • 代码如下:

string FJ(int n,string res){
	if (n == 1)
		return "A";
	return FJ(n - 1, res) + res[n - 1] + FJ(n - 1, res);
}

int main(){
	
	int n;
	cin >> n;
	char res[MAX];
	for (int i = 0; i < n; i++)
		res[i] = char(i + 65);

	cout << FJ(n, res) << endl;
	return 0;
}

方法二:步步为营;

  • 代码如下:

int n;
	cin >> n;
	string res[MAX];
	for (int i = 0; i < n; i++)
		res[i] = char(i + 65);

	string s = "A";
	for (int i = 1; i < n; i++){
		s += s;
		s.insert(s.length()/2,res[i]);
	}
	cout << s << endl;

	return 0;

 

最近有在做蓝桥杯的试题,感觉还不错,希望和大家一起交流交流学习心得。

代码仅供参考,可能不是很规范,望不弃!

坚持每天发一篇!加油!!!

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值