演算法訓練 s01串 (簡單遞迴)
問題描述 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… 由於掘金中無法