HDU 1278(漂亮面料的设计)

本文详细介绍了一个基于特定规则和飞数的矩阵生成算法。通过输入规则和飞数,算法能够生成并输出符合要求的矩阵,特别关注了如何通过计算确定矩阵元素的分布。如果最后一列和第一列因飞数总距离不匹配导致无法生成一致的矩阵,则输出错误信息。

题目不难,关键是理解题意,详细见注释。

#include <iostream>
#include <cstring>
using namespace std;
const int MAXL = 205;

int matrix[MAXL][MAXL]; //矩阵
int rule[2][MAXL]; //“规则”
int fly[2][MAXL]; //“飞数”

int main()
{
	int M, N;
	while (cin >> M >> N)
	{
		memset(matrix, 0, sizeof(matrix));
		memset(rule, 0, sizeof(rule));
		memset(fly, 0, sizeof(fly));

		//将“规则”和“飞数”存入对应数组
		for (int i = 0; i < M; i++)
			cin >> rule[0][i];
		for (int i = 0; i < M; i++)
			cin >> rule[1][i];
		for (int i = 0; i < N; i++)
			cin >> fly[0][i];
		for (int i = 0; i < N; i++)
			cin >> fly[1][i];

		int sum = 0; //第一列到最后一列移动的总距离
		for (int i = 0; i < N; i++)
		{
			sum += fly[0][i] * fly[1][i];
		}
		if (sum != 0) //距离不为0,则最后一列和第一列不同
		{
			cout << "Can not make beautilful cloth !" << endl;
			continue;
		}
		
		int row = 0; //行数
		for (int i = 0; i < M; i++) //将第一列存入矩阵
		{
			for (int j = 0; j < rule[0][i]; j++)
				matrix[row++][0] = 1;
			for (int j = 0; j < rule[1][i]; j++)
				matrix[row++][0] = 0;
		}

		int column = 0; //列数
		for (int i = 0; i < N; i++) //按照“飞数”依次生成各列
		{
			int dis = (fly[0][i] + row) % row; //当前列和上一列的“距离”
			for (int j = 0; j < fly[1][i]; j++) //该“距离”重复的列数
			{
				for (int k = 0; k < row; k++) //生成下一列
				{
					matrix[(k + dis) % row][column + 1] = matrix[k][column];
				}
				++column;
			}
		}

		for (int i = row - 1; i >= 0; i--) //输出
		{
			for (int j = 0; j < column; j++)
				cout << matrix[i][j];
			cout << endl;
		}
	}
	return 0;
}

继续加油。

下载前可以先看下教程 https://pan.quark.cn/s/16a53f4bd595 小天才电话手表刷机教程 — 基础篇 我们将为您简单的介绍小天才电话手表新机型的简单刷机以及玩法,如adb工具的使用,magisk的刷入等等。 我们会确保您看完此教程后能够对Android系统有一个最基本的认识,以及能够成功通过magisk root您的手表,并安装您需要的第三方软件。 ADB Android Debug Bridge,简称,在android developer的adb文档中是这么描述它的: 是一种多功能命令行工具,可让您与设备进行通信。 该命令有助于各种设备操作,例如安装和调试应用程序。 提供对 Unix shell 的访问,您可以使用它在设备上运行各种命令。 它是一个客户端-服务器程序。 这听起来有些难以理解,因为您也没有必要去理解它,如果您对本文中的任何关键名词产生疑惑或兴趣,您都可以在搜索引擎中去搜索它,当然,我们会对其进行简单的解释:是一款在命令行中运行的,用于对Android设备进行调试的工具,并拥有比一般用户以及程序更高的权限,所以,我们可以使用它对Android设备进行最基本的调试操作。 而在小天才电话手表上启用它,您只需要这么做: - 打开拨号盘; - 输入; - 点按打开adb调试选项。 其次是电脑上的Android SDK Platform-Tools的安装,此工具是 Android SDK 的组件。 它包括与 Android 平台交互的工具,主要由和构成,如果您接触过Android开发,必然会使用到它,因为它包含在Android Studio等IDE中,当然,您可以独立下载,在下方选择对应的版本即可: - Download SDK Platform...
### 杭州电子科技大学操作系统课程设计资源 #### 关于操作系统课程设计的目标与要求 操作系统课程设计旨在让学生深入理解操作系统的原理及其实际应用。学生需掌握进程管理、内存分配、文件系统以及设备驱动等方面的知识,并能够独立完成一个小规模的操作系统模块开发或优化现有系统性能的任务。 #### 可供参考的学习材料和教程链接 对于希望获取更多关于杭州电子科技大学操作系统课程设计的信息,建议访问学校官网的教学资源页面或是联系授课教师获得官方发布的指南文档。此外,在线平台上也有许多优质的开源项目案例可供学习借鉴: - **GitHub**: 许多高校会将其OS实验项目的源码托管于此处,可以找到不同版本内核实现细节; - **Stack Overflow & 优快云论坛**: 当遇到具体技术难题时可在此类社区提问交流寻求解决方案; #### 示例代码片段:简易调度器模拟 下面给出一段简单的Python程序来演示如何创建一个多道批处理环境下的轮转法(Round Robin)CPU调度仿真工具[^1]: ```python import queue class Process: def __init__(self, pid, burst_time): self.pid = pid self.burst_time = burst_time def round_robin(processes, time_slice): ready_queue = queue.Queue() for p in processes: ready_queue.put(p) while not ready_queue.empty(): current_process = ready_queue.get() if current_process.burst_time > 0 : print(f"Executing process {current_process.pid}") if current_process.burst_time >= time_slice: current_process.burst_time -= time_slice if current_process.burst_time > 0: ready_queue.put(current_process) else: remaining_time = min(time_slice,current_process.burst_time) current_process.burst_time=0 if __name__ == '__main__': proc_list=[Process(1,8),Process(2,4),Process(3,9)] slice_duration=2 round_robin(proc_list,slice_duration) ``` #### 报告撰写模板结构框架 一份完整的课程设计报告通常应包含以下几个部分: - 封面页:题目名称、作者姓名学号班级等基本信息。 - 摘要摘要:简述研究背景意义目的方法结论等内容不超过一页纸长度。 - 正文主体章节划分如下: - 绪论Introduction:介绍选题缘由现状分析理论依据等前置知识铺垫工作。 - 方案设计Design Scheme:描述整体架构思路关键技术难点解决措施等具体内容阐述。 - 实验测试Experimentation and Testing:记录调试过程参数设置运行结果对比评价指标体系构建等情况说明。 - 总结Conclusion:总结研究成果不足之处未来改进方向展望等收尾性质的文字表达。 最后附上必要的参考资料列表以便读者查阅原始出处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值