1. 程式人生 > >演算法訓練 s01串 (簡單遞迴)

演算法訓練 s01串 (簡單遞迴)

 演算法訓練 s01串   時間限制:1.0s   記憶體限制:256.0MB
問題描述   s01串初始為"0"
  按以下方式變換
  0變1,1變01 輸入格式   1個整數(0~19) 輸出格式   n次變換後s01串 樣例輸入 3 樣例輸出 101 資料規模和約定   0~19 AC code:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm> 
using namespace std;
int n;
char s[1000010];
void dfs(char s[],int len,int cnt)
{
	if(cnt==n)
	{
		for(int i=0;i<len;i++)
		{
			printf("%c",s[i]);
		}
		puts("");
		return;
	}
	for(int i=0;i<len;i++)
	{
		if(s[i]=='0')
			s[i]='1';
		else
		{
			s[i]='0';
			for(int j=len;j>i;j--)
			{
				s[j]=s[j-1];
			}
			s[i+1]='1';
			len++;
			i++;//跳過當前插入的這一位 
		}
	}
	dfs(s,len,cnt+1);
}

int main()
{
	while(scanf("%d",&n)!=EOF)
	{
		s[0]='0';
		dfs(s,1,0);
	}
	return 0;
}


相關推薦

演算法訓練 s01 簡單

 演算法訓練 s01串   時間限制:1.0s   記憶體限制:256.0MB 問題描述   s01串初始為"0"   按以下方式變換   0變1,1變01 輸入格式

全排列演算法使用

問題描述    對於任意的n個字母,實現其的全排列,並查詢第m個,其排列形式。我寫的這個程式碼中主要用的遞迴。 程式碼如下 #include<stdio.h>int n,book[10],k;      &nbs

藍橋杯 演算法訓練 ALGO-150 6-1 求二項式係數值

演算法訓練 6-1 遞迴求二項式係數值 時間限制:10.0s 記憶體限制:256.0MB 問題描述 樣例輸入 一個滿足題目要求的輸入範例。 3 10 樣例輸出 120 資料規模和約定   輸入資料中每一個數的範圍。   例:結果在int表示時不會溢位。 分析:本題很簡單,

藍橋杯 演算法訓練 s01

題目:   演算法訓練 s01串   時間限制:1.0s   記憶體限制:256.0MB 問題描述   s01串初始為"0"   按以下方式變換   0變1,1變01 輸入格式   1個整數(0~19) 輸出格式   n次變換後s01串 樣例輸入

演算法-一步步教你如何用c語言實現堆排序

看了左神的堆排序,覺得思路很清晰,比常見的遞迴的堆排序要更容易理解,所以自己整理了一下筆記,帶大家一步步實現堆排序演算法 首先介紹什麼是大根堆:每一個子樹的最大值都是子樹的頭結點,即根結點是所有結點的最大值 堆排序是基於陣列和二叉樹思想實現的(二叉樹是腦補結構,實際是陣列) 堆排序過程 1、陣列建

【資料結構】二叉樹的建立和遍歷

該程式使用的是遞迴地建立方法,以及非遞迴的遍歷演算法 執行環境:Dev-C++ #include <stdio.h> #include <stdlib.h> typedef struct node{ char data; struct node *lchild

hdu 1007 Quoit Design 分治+

題意就是輸入一堆點在二維平面上的座標,找出距離最短的兩個點對,距離除以2輸出。 很簡單的遞迴加分治。然而我昨天寫的時候WA到心態爆炸,今天終於明白整個結構都有問題,重新修改了一遍,直接過了。 附上程式碼: #include<iostream> #include<cs

python 學習彙總36:函式 tcy

遞迴函式(尾遞迴) 2018/11/15 用途: 遞迴函式常用於檢索大量資料,替代for迴圈。 1.遞迴深度設定: sys.getrecursionlimit() #返回

三元組矩陣行列式的計算

1.具體思想: 關於計算矩陣行列式有兩個主要方法: 1.根據居住行列式的定義式用遞迴計算(就是本文所講) 2.先做矩陣行變換,轉化為上三角矩陣,再求行列式。   (我先是思考了行變換轉化為三角矩陣,但中途遇到了些問題,所以先把遞迴的方法寫下來,之後會繼續更新另外一種方法。) 線性代數裡我

折半查詢

設有n個數據儲存於有序資料表中,在進行折半查詢之前,先找出資料表中的正中元素的下標mid,利用其關鍵碼L.Data[mid]與定值x作比較。    若x.key=L.Data[mid].key,查詢成功,返回其下標mid並報告成功;  &nb

巨人與鬼分治&&

做這一題學會了 atan2 的用法。 a(x1,y1)              b(x2,y2) 向量a=>b = (y2 - y1)/ (x2 - x1) 與x軸正半軸的夾角為  atan2( y2 - y1,x2 - x1)。。。。。 我寫這篇部落

c++中求1!+2!+3!+...+20!不用

c++中求1!+2!+3!+…+20!(不用遞迴) #include "stdafx.h" #include<iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) {

Unity編譯器之快捷新增碰撞器,和移除碰撞器運用

在實際做專案中,有時候經常需要對地形的碰撞體進行編輯,比如很多不需要加碰撞體的物件卻帶著碰撞體,如果手動去移除,工作量又是很大(經常子物體又是套著子物體,十分複雜),有時候又需要新增碰撞體,本人就移除碰撞體這件事件花了很長時間,不勝其煩,網上的資料也不是太多,也不全。所以在這給大家貼出流程與程式碼。

Codeforces Round #223 (Div. 2): C. Sereja and Prefixes二分+

題意: 你有一個序列,一開始為空,之後進行m次操作,操作有兩種: 1 x:在當前序列後面新增一個數x 2 x, y:將序列的前x個數複製y遍接序列後面(x<10000) 之後n次

十進位制轉換二進位制C++實現

實現十進位制轉換為二進位制非遞迴實現 以下是C++原始碼: #include<iostream> #include<stdio.h> using namespace std; //十進位制 轉換為 二進位制------非遞迴 int DecToBin(int de

VUE-開發一個樹形結構元件元件

需求 一個頁面,要顯示商品分類,同時每個分類下面還擁有若干子類,子類也可以有子類。 要實現全選單選,子類被逐個全選父類也要標記選中。 第一反應就是樹形結構,和遞迴呼叫。曾經在做WPF時記得有現成的元件,也學著寫過對應的後臺。這次我要自己寫一個前端的元件了。 這只是我自己花了點時間寫的一個

翻轉連結串列

1. 問題描述: 給出一個連結串列,翻轉連結串列,返回翻轉後連結串列的頭結點 2. 我們也可以使用非遞迴的方式來進行翻轉連結串列,首先遍歷連結串列,使用一個指標pre記錄當前節點的前一個節點,使用當前節點的next指向前一個節點pre,即下一個元素的指標next指向前一個元素pre那麼就實現

ALGO-65演算法訓練 比賽安排 陣列記錄判斷

演算法訓練 比賽安排   時間限制:1.0s   記憶體限制:512.0MB      問題描述   設有有2 n(n<=6)個球隊進行單迴圈比賽,計劃在2 n – 1天內完成,每個隊

二分搜尋

1 public class Main{ 2 public static int binarySearch(int a[],int x,int n) { 3 int left=0; 4 int right=n-1; 5 while(lef

資料結構:歸併排序

前言 歸併排序,是建立在歸併操作上的一種有效的排序演算法,效率為O(nlogn)​。1945年由約翰·馮·諾伊曼首次提出。該演算法是採用分治法的一個非常典型的應用,且各層分治遞迴可以同時進行。(引自維基百科) 原理 以上視訊轉自www.youtube.com/watch?v=JSc… 由於掘金中無法