欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-15 08:59:54
问题描述 FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其中的规律并写所有的数列AN吗? 输入格式 仅有一个数:N ≤ 26。 输出格式 请输出相应的字符串AN,以一个换行符结束。 ......
问题描述
  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