当前位置: 代码迷 >> 综合 >> 蓝桥杯 1115 DNA
  详细解决方案

蓝桥杯 1115 DNA

热度:74   发布时间:2024-02-01 12:14:15.0

题目描述
小强从小就喜欢生命科学,他总是好奇花草鸟兽从哪里来的。终于, 小强上中学了,接触到了神圣的名词–DNA.它有一个双螺旋的结构。这让一根筋的小强抓破头皮,“要是能画出来就好了” 小强喊道。现在就请你帮助他吧

输入
输入包含多组测试数据。第一个整数N(N<=15),N表示组数,每组数据包含两个整数a,b。a表示一个单位的DNA串的行数,a为奇数且 3<=a<=39。b表示重复度(1<=b<=20)。

输出
输出DNA的形状,每组输出间有一空行。

样例输入
2
3 1
5 4
样例输出
X X
X
X X

X X
X X
X
X X
X X
X X
X
X X
X X
X X
X
X X
X X
X X
X
X X
X X

#include<iostream> 
using namespace std;void DNA(int a,int b)
{int i,m,n,j;char d[a][a];//DNA的形状数组for(m=0;m<a;m++)		//初始化DNA数组,使之全为空格for(n=0;n<a;n++)d[m][n]=' ';     for(i=0;i<a;i++){d[i][i]='X';d[i][a-i-1]='X';	} for(j=0;j<b;j++){for( m=0;m<a;m++)		//打印DNAfor( n=0;n<a;n++){if(j!=0&&m==0)continue;cout<<d[m][n];if(n==a-1)cout<<endl;			}}}int main()
{int N;int x=0;cin>>N;int dna[N][2];for(x=0;x<N;x++){cin>>dna[x][0];//表示DNA串的行数 acin>>dna[x][1];//表示DNA的重复度 b}for(x=0;x<N;x++){DNA(dna[x][0],dna[x][1]);cout<<endl;}return 0;
}

菜鸡秃头点:
1、为了打印出X之间的空格,所以用的是行数X行数的二维数组
(一开始没想到要用数组,找规律一个个分别输出X和空格,人都傻了)

2.注意题目中连续输出时,第一组的最后一行和下一组的第一行是同一行,所以用了一个continue

continue和return的区别:
continue:跳过这一次的循环,进行下一次的循环
return:跳出循环,执行循环之后的下一条语句

举一个翁恺老师说的例子嘿嘿
点一排同学起来唱歌,一个接着一个唱,第一个同学唱得很难听,不想听他唱的歌,但是还想听下一个同学唱的歌,叫这个同学别唱了,叫下一个同学起来唱歌————这是continue

第二个第三个同学都唱得超难听,于是不想继续听了,赶快叫这个同学别唱了,后面的也不用唱了————这个是return