1412202129-hpu-1006:DNA

1006: DNA

时间限制: 1 Sec  内存限制: 128 MB

提交: 4  解决: 2

[提交][状态][讨论版]

题目描述

小强从小就喜欢生命科学,他总是好奇花草鸟兽从哪里来的。终于, 小强上中学了,接触到了神圣的名词--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

解题思路

通过观察输出确定题目要求的输出格式,注意两点:1、每行之后没有多余的空格  2、不是单纯的重复输出一个图形,而是每两个小图形之间相连接。

代码

#include<stdio.h>
int main()
{
	int t;
	int a,b;
	int i,j,k;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&a,&b);
		for(i=1;i<=b;i++)
		{
			if(i%2==1)
			//当是第奇数个小图形的时候,就将小图形完全输出
			{
				for(j=1;j<=a;j++)
				{
					for(k=1;k<=a;k++)
					{
						if(k==j||k==a-j+1)
						    printf("X");
						else
						    printf(" ");
						if((j<=a/2&&k==a-j+1)||(j>a/2&&k==j))
						    break;//避免输出多余的空格
					}
					printf("\n");
				}
			}
			else
			{//当是第偶数个小图形的时候,将小图形首尾各截去一行再输出
				for(j=2;j<=a-1;j++)
				{
					for(k=1;k<=a;k++)
					{
						if(k==j||k==a-j+1)
						    printf("X");
						else
						    printf(" ");
						if((j<=a/2&&k==a-j+1)||(j>a/2&&k==j))
						    break;
					}
					printf("\n");
				}
			}
		}
		if(b%2==0)//如果一共有偶数个小图形,那么在最后就需要再加一个尾,即小图形的最后一行
		{
		    for(i=1;i<=a;i++)
		    {
		        if(i==1||i==a)
		            printf("X");
		        else
		            printf(" ");
		    }
		    printf("\n");
		}
		if(t!=0)
		    printf("\n");
	}
	return 0;
} 
时间: 2024-11-16 09:56:30

1412202129-hpu-1006:DNA的相关文章

POJ_1007:DNA Sorting解题报告

[大致题意]排列多个DNA序列,按照每个序列的"有序程度".如果一个序列已经按照字母顺序排好了,那么这个序列有序程度最高,如AACCGGTT.反之,如果一个序列越无序,那么它的有序程度越低,如TGTCAA. [解题思路]计算每个序列的"逆序数",即反序字母对的个数,如ATGC的逆序数是3,因为TG,TC,GC都是逆序的.然后按照每个序列的逆序数排序,逆序数越大说明这个序列越无序. #include <iostream> #include <algo

1006:A+B问题

1006:A+B问题 [题目描述] 大部分的在线题库,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法. A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值.保证A.B及结果均在整型范围内.现在请你解决这一问题. [输入] 一行,包含两个整数A,B,中间用单个空格隔开.A和B均在整型范围内. [输出] 一个整数,即A+B的值.保证结果在整型范围内. [输入样例] 1 2 [输出样例] 3 #include<iostream> using namespace std; int

2015年“深圳杯”数学建模夏令营-B题:DNA序列的k-mer index 问题

这是一个山科大的同学给我的一个问题,向我询问一下思路,对于数学建模,我没太多的了解,所以只能用计算机程序的方法来解答. 这是具体的问题: 这个问题来自 DNA序列的k-mer index问题. 给定一个DNA序列,这个系列只含有4个字母ATCG,如 S ="CTGTACTGTAT".给定一个整数值k,从S的第一个位置开始,取一连续k个字母的短串,称之为k-mer(如k= 5,则此短串为CTGTA), 然后从S的第二个位置, 取另一k-mer(如k= 5,则此短串为TGTAC),这样直至

PAT——乙级1006:换个格式输出整数&amp;乙级1021:个位数统计&amp;乙级1031:查验身份证

1006 换个格式输出整数 (15 point(s)) 让我们用字母 B 来表示"百".字母 S 表示"十",用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数.例如 234 应该被输出为 BBSSS1234,因为它有 2 个"百".3 个"十".以及个位的 4. 输入格式: 每个测试输入包含 1 个测试用例,给出正整数 n(<1000). 输出格式: 每个测试用例的

北大OJ_1007题:DNA Sorting

该题的意思是输入指定数量的字符串,每个字符串的长度一样,找出每个字符串中逆序对,然后按逆序对的升序输出所以的字符串,逆序对相同的则按输入时的顺序输出. 此题的突破点在找逆序对,以下列举两种找出逆序对的方法. 穷举法找逆序对(时间复杂度为O(n^2)) #include <iostream> #include <string> #include <deque> #include <cmath> using namespace std; struct tagSt

2015年“深圳杯”数学建模夏令营 B题:DNA序列的k-mer index问题

这个问题来自 DNA序列的k-mer index问题. 给定一个DNA序列,这个系列只含有4个字母ATCG,如 S ="CTGTACTGTAT".给定一个整数值k,从S的第一个位置开始,取一连续k个字母的短串,称之为k-mer(如k= 5,则此短串为CTGTA), 然后从S的第二个位置, 取另一k-mer(如k= 5,则此短串为TGTAC),这样直至S的末端,就得一个集合,包含全部k-mer . 如对序列S来说,所有5-mer为 {CTGTA,TGTAC,GTACT,TACTG,ACT

题目1006:ZOJ问题

题目描述: 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC. 是否AC的规则如下: 1. zoj能AC: 2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空: 3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空: 输入: 输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,字符串长度小于等于1000. 输出: 对于给定的字符串,如果能AC则请输出字符串"Accepted"

POJ 1006:Biorhythms 中国剩余定理

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 121194   Accepted: 38157 Description Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical,

2019年7月25日 shell练习--PAT题目1006:换个格式输出整数(失败案例)

让我们用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<),换个格式来输出任一个不超过 3 位的正整数.例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”.3 个“十”.以及个位的 4. 输入格式: 每个测试输入包含 1 个测试用例,给出正整数 n(<). 输出格式: 每个测试用例的输出占一行,用规定的格式输出 n. 输入样例 1: 234 输出样例 1: BBSSS1234 输入样例 2: 23 输出样例 2: SS123 这