用C++实现:FJ的字符串打印

问题描述

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

输入格式

  仅有一个数:N ≤ 26。

输出格式

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

样例输入

3

样例输出

ABACABA

思路:观察题目中的例子,发现每一个字符串都具有对称性,n=1,就以A为对称中心,n=2,就以B为对称中心,n=3,就以C为对称中心......并且每一次对称,都是由上一项字符串来组成对称的两边,所以用递归函数来解决这个问题。

 1 #include<iostream>
 2 using namespace std;
 3
 4 class print_string
 5 {
 6 public:
 7     int get_n()
 8     {
 9         cin>>n;
10         return n;
11     }
12
13     void recursion(int n)    //递归函数
14     {
15         if(n==1)
16         {
17             cout<<"A";
18         }
19         else
20         {
21             recursion(n-1);
22             t=‘A‘+n-1;
23             cout<<t;
24             recursion(n-1);
25         }
26     }
27 private:
28     int n;
29     char t;        //用来控制每次递归的输出
30 };
31
32 int main(void)
33 {
34     print_string x;
35     int a;
36     a=x.get_n();
37     x.recursion(a);
38     return 0;
39 }

在看一个用C语言写的代码:

 1 # include <stdio.h>
 2
 3 int main()
 4
 5 {
 6
 7     int i,j;
 8
 9     char c[50][1000];
10
11     int n;
12
13     char cc=‘A‘;
14
15     int count=1;
16
17     int temp;
18
19     scanf("%d", &n);
20
21     c[1][1] = ‘A‘;
22
23     c[1][2] = ‘\0‘;
24
25     for (i=2; i<=n; i++)
26
27     {
28
29         temp = count;
30
31         count = count*2+1;
32
33         for (j=1; c[i-1][j]!=‘\0‘; j++)
34
35         {
36
37             c[i][j] = c[i-1][j];
38
39             c[i][j+temp+1] = c[i-1][j];
40
41
42
43         }
44
45         c[i][temp+1] = ++cc;
46
47         c[i][j+temp+1] = ‘\0‘;
48
49     }
50
51
52
53     for (i=1; c[n][i]!=‘\0‘; i++)
54
55         printf("%c", c[n][i]);
56
57     printf("\n");
58
59
60
61     return 0;
62
63 }

原文链接:https://blog.csdn.net/a237653639/article/details/21323641

原文地址:https://www.cnblogs.com/guanrongda-KaguraSakura/p/12630668.html

时间: 2024-10-11 22:01:53

用C++实现:FJ的字符串打印的相关文章

字符串打印tips&amp; 猜数练习

字符串打印tips #逗号可以起到打印字符不换行的作用 print 'hello',; print 'world' # ''' 三引号可以表示可输入多行,在交互模式下 print ''' abc def ''' # \n表示回车,\t表示制表符 print 'a\nb\nc\n' print'a\tb\tc\t' 判断,if else #coding:UTF-8 a='s' b=1 c=2.1 if isinstance(a, str): print u'这是一个字符串' if isinstan

蓝桥杯——基础练习之FJ的字符串

问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "ABACABADABACABA" - - 你能找出其中的规律并写所有的数列AN吗? 输入格式 仅有一个数:N ≤ 26. 输出格式 请输出相应的字符串AN,以一个换行符结束.输出中不得含有多余的空格或换行.回车符. 样例输入 3 样例输出 ABACABA public static void main(

[BASIC-22] FJ的字符串

基础练习 FJ的字符串 时间限制:1.0s   内存限制:512.0MB 问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "ABACABADABACABA" - - 你能找出其中的规律并写所有的数列AN吗? 输入格式 仅有一个数:N ≤ 26. 输出格式 请输出相应的字符串AN,以一个换行符结束.输出中不得含有多余的空格或换行.回车符. 样例输入 3

蓝桥杯之FJ的字符串

基础练习 FJ的字符串 时间限制:1.0s   内存限制:512.0MB 问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "ABACABADABACABA" - - 你能找出其中的规律并写所有的数列AN吗? 输入格式 仅有一个数:N ≤ 26. 输出格式 请输出相应的字符串AN,以一个换行符结束.输出中不得含有多余的空格或换行.回车符. 样例输入 3

基础训练 FJ的字符串

FJ的字符串 #include<iostream> #include<string.h> using namespace std; int main(){ string str=""; int N; cin>>N; for(int i=0; i<N; i++){ string s=str; str.append(1,'A'+i); str+=s; } cout<<str<<endl; return 0; } 原文地址:h

基础练习 FJ的字符串

问题描述 FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其中的规律并写所有的数列AN吗? 输入格式 仅有一个数:N ≤ 26. 输出格式 请输出相应的字符串AN,以一个换行符结束.输出中不得含有多余的空格或换行.回车符. 样例输入 3 样例输出 ABACABA 锦囊1 递归. 锦囊2 使用递归输出. C/C++测试代码 1 #include<stdio.h> 2 #inclu

SDNU 1410.FJ的字符串

Description 由样例可知,每个字符串长度是前一个字符串长度的2倍+1: 字符串顺序为 :An 某个字母 An FJ在沙盘上写了这样一些字符串: A1  =  "A" A2  =  "ABA" A3  =  "ABACABA" A4  =  "ABACABADABACABA" -  - 你能找出其中的规律并写所有的数列AN吗? Input 仅有一个数:N  ≤  26. Output 请输出相应的字符串AN,以一个换行

蓝桥杯 BASIC 22 FJ的字符串(递归、字符串)

[思路]:递归的使用. [AC代码]: #include <iostream> #include <algorithm> #include <iomanip> #include <cstdio> #include <cstring> using namespace std; void fj(int n) { if (1 == n) { cout << char('A'-1+n); } else { fj(n-1); cout <

字符串打印

在采用字符串方式后,字符数组的输入输出将变得简单方便.除了上述用字符串赋初值的办法外,还可用scanf函数和printf函数一次性输入输出一个字符数组中的字符串,而不必使用循环语句逐个输入输出每个字符. 要输出一个字符串需要在printf函数的格式描述串中使用转换字符串“%s”,表示输出的是一个字符串.如: char name[]="Hello world"; printf("%s\n",name); 在printf语句中使用了转换字符串“%s”,因此输出参数中只给