栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

PAT乙级1008题解(C语言实现)

C/C++/C# 更新时间:发布时间: 百科书网 趣学号

大家好啊,这里是Cyber Striver的博客。今天我继续为大家带来PAT乙级的题解。

目录

题目

题解

思路

经验总结


题目


题解

【2022--5--22】 WR:部分正确 16/20

#include 
int main()
{
	int n = 0,m=0,i=0,count=0;
	int a[10000] = {0};
	int b[10000] = {0};
	scanf("%d", &n);     //数组的元素个数
	scanf("%d", &m);    //向右移位数
	for (i = 0; i < n; i++)
		scanf("%d", a + i);
	for (i = 0;i<2;i++)
	{
		int mid = a[i];
		count = i;                     //走出循环的条件就是全部都已经移位了
		for (;;)
		{   
			int tem = (count - m + n * (m / n));
			if (tem < 0)
			{
				a[count] = a[count - m + n * (m / n + 1)]; b[count] = 1;
				count = count - m + n * (m / n + 1);
			}
			if (tem >= n)
			{
				a[count] = a[count - m + n * (m / n - 1)]; b[count] = 1;
				count = count - m + n * (m / n -1);
			}
			a[count] = a[count - m + n * (m / n )]; b[count] = 1;
			count = count - m + n * (m / n );
			if (b[i + m] == 1 && i + m < n)
			{
				a[i + m] = mid;
				break;
			}
			if (b[i + m - n * ((i + m) / n)] == 1 && i + m >= n)
			{
				a[i + m - n * ((i + m) / n)] = mid;
				break;
			}
		}
	}
	for (i = 0; i < n; i++)
    {printf("%d", a[i]);
    if (i != n - 1)
			printf(" ");
    }
    printf("n");
	return 0;
}


思路


经验总结


本次博客到这里就结束了,如果你觉得我的文章还不错的话,请给我多多点赞评论哦!

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/925427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号