原题链接:DNA
解题思路: 一拼一凑做出来,留作下次复习;
思路:比如5数DNA我就前四列一循环打印,最后补上最后一列的打印就完事。s数组用于存打印内容1(两个X和无数个空格‘ ’),b数组用于存特殊情况(一个X和无数空格),然后begin和end都指着X的位置,以便移动,然后每次就一列一列的打印,最后补上最后一列.有些地方代码冗余了,没有优化,有时间再说。
注意事项:
参考代码:
#includeusing namespace std;
void swap(char* x,char *y) {char t;t=*x;*x=*y;*y=t;};
int main()
{
char s[40];
char* begin;
char* end;
char b[40];
int n,a1,b1;
cin >> n;
for (int ee = 0; ee < n; ee++)
{
cin >> a1 >> b1;
memset(s, ' ', sizeof(s));
memset(b, ' ', sizeof(b));
for (int i = 0; i < b1; i++)
{
memset(s, ' ', sizeof(s));
s[0] = 'X';
s[a1 - 1] = 'X';
s[a1] = '\0';
begin = s;
end = s + a1 - 1;
for (int k = 0; k < a1 - 1; k++)
{
if (k == (a1 - 1) / 2)
{
b[k] = 'X';
b[a1] = '\0';
puts(b);
}
else
{
puts(s);
if ((begin + 1) != (end - 1))
{
swap(begin, begin + 1);
begin++;
swap(end, end - 1);
end--;
}
else
{
char* t = begin;
begin = end;
end = t;
}
}
}
}
memset(s, ' ', sizeof(s));
s[0] = 'X';
s[a1 - 1] = 'X';
s[a1] = '\0';
puts(s);
cout << endl;
}
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复