1. 程式人生 > 實用技巧 >題目 1115: DNA -c語言網

題目 1115: DNA -c語言網

型別:遞迴

思路:由第一行逐步推出剩下的幾行。

  參照這位大佬:https://blog.dotcpp.com/a/3493

AC程式碼:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std; 
const int MAX_N=40;
char dna[MAX_N];

void init(int k)
{
    dna[0]='X';
    dna[k-1]='X';
    
    for(int i=1;i<k-1;i++)
    {
        dna[i]
=' '; } } void output(int a,int b,int l,int r)//a:單位DNA的列數,b:一個完整DNA的行數 ,l,r左右定位座標 { if(b==0) { cout<<endl; return; } else { for(int i=0;i<a;i++) cout<<dna[i]; cout<<endl; } if(l==a-1&&r==0) //一輪結束 { l
=0; r=a-1; } //交換的過程 char tmp_a=dna[l]; char tmp_b=dna[r]; dna[l]=dna[l+1]; l++; dna[r]=dna[r-1]; r--; dna[l]=tmp_a; dna[r]=tmp_b; output(a,b-1,l,r); } int main() { int n; while(cin>>n) { memset(dna,0,sizeof(dna));
for(int i=0;i<n;i++) { int a,b; cin>>a>>b; init(a); output(a,a*b-(b-1),0,a-1); } } return 0; }
View Code