SK


私信TA

用户名:1973231998

访问量:20044

签 名:

成功只是一时的,失败才是主旋律,笑着面对失败是主要的。

等  级
排  名 258
经  验 5902
参赛次数 0
文章发表 59
年  龄 0
在职情况 学生
学  校 *
专  业

  自我简介:

解题思路: 一拼一凑做出来,留作下次复习;

思路:比如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分

4 人评分

  评论区

  • «
  • »