原题链接:自动晾衣机
解题思路:记住是环形的晾衣杆,直接不用思考,选择循环链表,虽然单链表也可以,但是怕出错,直接模拟每次晾衣服就OK
注意事项:每次记得清除上一组的数据,防止WA(wrong answer)
参考代码:
#include<iostream>//直接循环链表模拟,直接当暴力模拟党 一遍过
using namespace std;
struct Node
{
int NO; //代表第几个夹子
int ocp=0;//占用的情况
struct Node* next;//链表节点指针,指向下一个
};
int main()
{
int n;cin>>n;//有多少个夹子
Node *head=new Node;
head->next=head;
head->NO=1;//初始化头节点 直接把他当作第一个夹子
for(int i=n;i>=2;i--)
{
Node* temp=new Node;
temp->next=head->next;
head->next=temp;
temp->NO=i;//通过尾插法插入链表节点,所以i会倒序 细品
}
int m;//m个数据
while(cin>>m)
{
Node* p=head;
while(m--)
{
int x;cin>>x;//衣服长度
while(x)
{
p->ocp=1;
p=p->next;
x--;
}
p->ocp=2;//此时刚好p指向中间隔着的夹子,直接设置ocp为2即可
p=p->next;//继续指向下一个夹子
}
int idx;cin>>idx;//需要查询的节点的下标
p=head;
while(p->NO!=idx) p=p->next;//找到我们的下标
cout<<p->ocp<<endl;//直接输出他的占用情况
p=head;
while(p->next!=head)
{
p->ocp=0;//记得每次一组数据求完要清空上一组的数据
p=p->next;
}
p->ocp=0;//最后一个节点还没清清除,再手动清除就OK
}
return 0;
}没有思路可言,直接逻辑模拟
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复