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