C言語のネットワーク:質問1115:DNA

問題1115:DNA

制限時間:1秒メモリ制限:128MBの提出:4026解像度:1355

タイトル説明

Xiaoqiangは、彼は、常に好奇心花や鳥がどこから来たの生命科学の習慣を持っていました。最後に、ジョニーは高校で、神聖な言葉--DNAへのアクセス。これは二重らせんの一つの構造を有しています。これは「うまく引き出すことができた場合、」シャオ強は叫んだ腱Xiaoqiangは、頭皮を傷つけることができます。今、あなたは彼を助けることができます。

エントリー

データの複数のセットを含むテスト入力。最初の整数N(N <= 15)、Nはグループの数、二つの整数、Bを含むデータの各基を表します。DNA配列の単位の列数が、奇数及び3 <= <= 39で表しています。B反復を表す(1 <= B <= 20)。

輸出

出力のDNA形状は、各出力の間に空行があります。

サンプル入力

2 
3 1 
5 4

サンプル出力

XX 
 X 
XX 

XX 
 XX 
  X 
 XX 
XX 
 XX 
  X 
 XX 
XX 
 XX 
  X 
 XX 
XX 
 XX 
  X 
 XX 
XX

アイデア:再帰的なアナログ出力ではなく、第一の出力は、出力の最初の行が少なくなる場合、あるピットがあります。

#include<iostream>
using namespace  std;
int   a;
void  print( int n ,int f ,int noprint){
	  if( n==0 )
	      return ; 
      if( n== a/2+1 ){ 
	      print(n-1,0,noprint);
	      for( int i=1;i<=a;i++){
	  	         if(  i==n   )
			          printf("X");
		         else printf(" ");	
	        }
	      printf("\n"); 
		  print(n-1,1,noprint);
	  } 
      else{ 
        if( !f ){ 
            print(n-1,f,noprint); 
			if( n==1 && noprint == 1 || n > 1){ 
			    for( int i=1;i<=a;i++){
	  	         if( i==n ||  a+1-i == n )
			         printf("X");
		         else printf(" ");	
	          }
	          printf("\n"); 
	       }
        }
        else {
        	for( int i=1;i<=a;i++){
	  	         if( i==n ||  a+1-i == n )
			         printf("X");
		         else printf(" ");	
	        }
	        printf("\n"); 
	        print(n-1,f,noprint);
		}
     }   
}
int main(void){
	int n;
	cin>>n;
	while(n--){
	  int  b;
	  cin>>a>>b;
	  for( int i=1;i<=b;i++)
	  	   print(a/2+1,0,i);
	  printf("\n"); 
	} 
	return 0;
}

 

公開された736元の記事 ウォンの賞賛123 ・は 80000 +を見て

おすすめ

転載: blog.csdn.net/S_999999/article/details/103285874