当前位置: 代码迷 >> 综合 >> ZCMU--1808: FJ的字符串(CC++)
  详细解决方案

ZCMU--1808: FJ的字符串(CC++)

热度:5   发布时间:2023-12-06 10:09:00.0

题目描述

FJ在沙盘上写了这样一些字符串:   

A1 = “A”   A2 = “ABA”   A3 = “ABACABA”   A4 ==“ABACABADABACABA”   …

你能找出其中的规律并写所有的数列AN吗?

输入

仅有一个数:N ≤ 26。

输出

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

样例输入

3

样例输出

ABACABA

解析:小规律已经在题面红色标出来了噢,这题利用C++string类十分方便,C的话要利用两个数组交替拷贝。

C

#include <stdio.h>
#include <string.h>
char a[1005],b[1005];//数组开大一点,不然会越界 
int main()
{int i,n,len;char biaoji;//表示中心添加的字母 while(~scanf("%d",&n)){memset(a,'\0',sizeof(a));//清空一下 memset(a,'\0',sizeof(a));a[0]='A';biaoji='A';for(i=2;i<=n;i++){strcat(b,a);//strcat函数,将a拼接到b后面 len=strlen(b);//确定添加中心字母位置 biaoji++;//中心要添加的字母加一,变成下一个字母 b[len]=biaoji;// strcat(b,a);memset(a,'\0',sizeof(a)); //清空,然后将b拷贝过来 strcpy(a,b);memset(b,'\0',sizeof(b));//清空,等待下次拷贝 }printf("%s\n",a); }return 0;
}

C++: 

#include <iostream>
using namespace std;
int main()
{int n;string a,b; char c; //添加的中心字母 while(cin>>n){a='A',b='A',c='B';//初始化噢 n--;//因为初始化为'A',n减一次。 while(n--){b=a+c+a;//string类直接拼起来 a=b;//b拷贝到a c++;//中心添加的字母加一,变成下一次字母 }cout<<b<<endl;}return 0;
}