蓝桥杯 算法训练 ALGO-139 s01串

算法训练 s01串 
时间限制:1.0s 内存限制:256.0MB 
问题描述 
  s01串初始为”0” 
  按以下方式变换 
  0变1,1变01 
输入格式 
  1个整数(0~19) 
输出格式 
  n次变换后s01串 
样例输入 

样例输出 
101 
数据规模和约定 
  0~19

示例代码[Java]:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     static StringBuffer sb = new StringBuffer(); 
 5     public static void main(String[] args) {
 6         Scanner sc = new Scanner(System.in);
 7         int n = sc.nextInt();
 8 
 9         if(n == 0){
10             System.out.println("0");
11         }else{
12             f(n , "0");
13         }
14         System.out.println(sb);
15     }
16 
17     private static void f(int n, String s) {
18         String str="";
19 
20         if( n < 0)
21             return;
22         n--;
23         for(int i = 0 ; i < s.length() ; i++){
24             str = s.substring(i , i+1);
25             if(str.equals("0")){
26                 str = "1";
27             }else if(str.equals("1")){
28                 str = "01";
29             }
30 
31             f( n , str);
32 
33             if(n == 0 ){
34                 sb.append(str);
35             }
36         }
37     }
38 }

 

示例代码[c++]:

 1 #include<iostream>
 2 #include<string.h>
 3 using namespace std;
 4 
 5 
 6 void f(int n, string s)
 7 {
 8     string str = "";
 9     if(n < 0)
10     {
11         return ;
12     }
13     
14     n--;
15     
16     for(int i = 0; i < s.size(); i++)
17     {
18         if(s[i] == '0')
19         {
20             str += "1";
21         }
22         else
23         {
24             str += "01";
25         }
26     }
27     
28     f(n,str);
29     
30     if(n == 0)
31     {
32         cout << str;
33     }
34 }
35 
36 int main()
37 {
38     int n;
39     cin >> n;
40     
41     if (n == 0) 
42     {
43         cout << "0";
44     }
45     else
46     {
47         f(n, "0");
48     }
49     
50     return 0;
51 } 

 

示例代码[c++]:

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 int main() 
 6 {
 7     int n;
 8     cin >> n;
 9     string s = "0";
10     while(n--) {
11         for(int i = 0; i < s.length(); i++) 
12         {
13             if(s[i] == '0') 
14             {
15                 s[i] = '1';
16             } 
17             else 
18             {
19                 s.insert(i, "0");
20                 i = i+1;
21             }
22         }
23     }
24     cout << s;
25     return 0;
26 }

 

转载于:https://www.cnblogs.com/cao-lei/p/6523205.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值