HDU 1278 漂亮面料的设计

简单题详解
本文介绍了一个简单的编程题目,通过使用C++实现,详细展示了如何构造和操作二维字符数组来模拟布料变化的过程。此题无特殊技巧,重在理解并逐步实施。

其实是一道简单的题目,耐心的慢慢做就能做出。

没有什么技巧。

#include <iostream>
using namespace std;
struct node
{
    int a,b;
    int c,d;
};
int main()
{
    int m,n;
    int i,j,k,l,t,v;
    node job[205];
    char a[205],b[205];  //a数组用来记录每次的变化,b数组用来存第一列数据
    char f[205][205];    //f数组用来存矩阵
    while(cin>>m>>n)
    { 
        //输入数据
        for(i=0;i<m;i++)
            cin>>job[i].a;
        for(i=0;i<m;i++)
            cin>>job[i].b;
        for(i=0;i<n;i++)
            cin>>job[i].c;
        for(i=0;i<n;i++)
            cin>>job[i].d;
        k=0;l=0;
        for(i=0;i<m;i++)      //将第一列数据赋值给定义的两个字符数组        
        {
            for(j=0;j<job[i].a;j++){
                a[k++]='1';
                b[l++]='1';
            }
            for(j=0;j<job[i].b;j++){
                a[k++]='0';
                b[l++]='0';
            }
        }
        int s=0;
        v=k-1;
        for(t=0;t<k;t++)    //将第一列的值赋给f数组
        {
            f[v--][s]=a[t];
        }
        s++;
        for(i=0;i<n;i++)   
        {
            for(j=0;j<job[i].d;j++)     //每一个job[i].c需要做job[i].d次
            {
                if(job[i].c>0)        //判断是向上移动还是向下移动
                {
                    for(t=0;t<job[i].c;t++)  //移动job[i].c个字符
                    {
                        int temp=a[k-1];
                        for(v=k-1;v>0;v--)  //将数组的值移动
                            a[v]=a[v-1];
                        a[0]=temp;
                    }
                }
                else
                {
                    int w=-1*job[i].c;
                    for(t=0;t<w;t++)
                    {
                        int temp=a[0];
                        for(v=0;v<k-1;v++)
                            a[v]=a[v+1];
                        a[k-1]=temp;
                    }
                }
                v=k-1;
                for(t=0;t<k;t++)
                {
                    f[v--][s]=a[t];
                }
                s++;
            }
        }
        v=k-1;
        for(i=0;i<k;i++)
        {
            if(f[i][s-1]!=b[v])
                break;
            v--;
        }
        if(i==k){
            for(i=0;i<k;i++)
            {
                for(j=0;j<s-1;j++)
                    cout<<f[i][j];
                cout<<endl;
            }
        }
        else
            cout<<"Can not make beautilful cloth !"<<endl;
    }
    return 0;
}



### 杭州电子科技大学操作系统课程设计资源 #### 关于操作系统课程设计的目标与要求 操作系统课程设计旨在让学生深入理解操作系统的原理及其实际应用。学生需掌握进程管理、内存分配、文件系统以及设备驱动等方面的知识,并能够独立完成一个小规模的操作系统模块开发或优化现有系统性能的任务。 #### 可供参考的学习材料和教程链接 对于希望获取更多关于杭州电子科技大学操作系统课程设计的信息,建议访问学校官网的教学资源页面或是联系授课教师获得官方发布的指南文档。此外,在线平台上也有许多优质的开源项目案例可供学习借鉴: - **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、付费专栏及课程。

余额充值