CCF认证 201903-4消息传递接口
题目


代码
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
using namespace std;
char code[669][10002][70] = {0};
void Move_Str(char *Old) // 将字符串向前移动,每次判断的是队列的最前面的那一个
{
{
int i = 0;
char temp[70] = {0};
while((*(Old+i)) != ' ' && (*(Old+i)) != 0)
{
i++;
}
memcpy(temp, Old+i+1, 70);
memcpy(Old, temp, 70);
return;
}
int change_num(char *start) // 将字符串中的那一段变成数字,一开始就是错在这里,没有话考虑到数字很大
{
int num_temp = 0, i = 0;
char str_temp[10] = {0};
while(*(start+i) != ' ' && *(start+i) != 0)
{
str_temp[i] = *(start+i);
i++;
}
str_temp[i] = 0;
num_temp = atoi(str_temp);
return num_temp;
}
int main()
{
int T = 0, n = 0;
cin >> T; cin >> n;
getchar();
int i = 0, j = 0, flag = 0, temp_num = 0, unlock = 0;
int Looked[10002] = {0}, k = 0;
char str_temp[10] = {0};
for(i = 0; i< T; i++)
{
for(j = 0; j< n; j++)
{
gets(code[i][j]);
//cout << code[i][j] << endl;
}
}
for(i = 0; i<T; i++)
{
while(1)
{
flag = 0; unlock = 0;
for(j = 0; j< n; j++)
{
Looked[j] = 0; // 将 Looked数组初始化
if(code[i][j][0] != 0)
flag = 1;
}
if(flag == 0)
{
cout << 0 << endl;
break;
// 表示全部都完成了,也就是不会发生死锁
}
// 判断是否是死锁啊
for(j = 0; j< n; j++)
{
if(Looked[j] == 1)
continue;
if(code[i][j][0] == 'R')
{
temp_num = change_num(code[i][j]+1);
if(code[i][temp_num][0] == 'S' && ((change_num(code[i][temp_num]+1)) == j))
{
Move_Str(code[i][j]);
Move_Str(code[i][temp_num]);
unlock = 1;
Looked[j] = 1;
Looked[temp_num] = 1;
// 这样是不会死锁的
}
}
else
{
temp_num = change_num(code[i][j]+1);
if(code[i][temp_num][0] == 'R' && ((change_num(code[i][temp_num]+1)) == j))
{
Move_Str(code[i][j]);
Move_Str(code[i][temp_num]);
unlock = 1;
Looked[j] = 1;
Looked[temp_num] = 1;
// 这样是不会死锁的
}
}
}
if(unlock == 0)
{
cout << 1 << endl;
break;
// 表示死锁了
}
}
}
return 0;
}
CCF认证 201903-4消息传递接口的更多相关文章
- CCF认证历年试题
CCF认证历年试题 不加索引整理会死星人orz 第一题: CCF201712-1 最小差值(100分) CCF201709-1 打酱油(100分) CCF201703-1 分蛋糕(100分) CCF2 ...
- 小明种苹果(续)第十七次CCF认证
小明种苹果(续)第十七次CCF认证 题目 原题链接 ](http://118.190.20.162/view.page?gpid=T93) 很高心,在现在CCF CSP可以下载自己当时的答卷了,也就是 ...
- CCF 消息传递接口 (队列) 201903-4 (100分)
[题目描述] 老师给了 T 份 MPI 的样例代码,每份代码都实现了 n 个进程通信.这些进程标号 从 0 到 n − 1,每个进程会顺序执行自己的收发指令,如:“S x”,“R x”.“S x”表示 ...
- CCF认证(1)
#include <iostream> #include <windows.h> using namespace std; typedef struct letter{ int ...
- CCF 认证4
题意:求强联通分量 Tarjan算法 #include<iostream> #include<stdio.h> #include<stdlib.h> #includ ...
- CCF 认证
题意:字符串替换 string+map的应用 #include<iostream> #include<stdio.h> #include<stdlib.h> #in ...
- CCF认证考试——折点计数
描述:简单题 #include<iostream> using namespace std; int main() { ], n, count = ; cin >> n; ; ...
- CCF认证之——相反数
这道题目非常简单! #include<iostream> using namespace std; int main() { ],n,count=; cin >> n; ; i ...
- ccf认证 201709-4 通信网络 java实现
试题编号: 201709-4 试题名称: 通信网络 时间限制: 1.0s 内 ...
随机推荐
- HTTP 强制缓存和协商缓存
Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间.借助 HTTP 缓存,Web 站点变得更具有响应性. 缓存优点: 减少不必要的数据传输,节省带宽 减少服务器负担,提升网站性能 加快 ...
- 推荐一些github上的免费好书
本文转载自公众号:跟着小一写bug. 熬夜等于慢性自杀,那熬夜和喜欢的人说话,算不算是慢性殉情? 晚上好 小一来啦 有木有想哀家 其实今晚小一有个拳击课 可是 由于项目明天要演示 调一 ...
- RedHat 6 安装 MySQL 5.5 流程记录及相关问题解决方案
目录 1. RedHat 中 使用 yum 方式安装 MySQL 2. 安装过程中遇到的问题 1. RedHat 中 使用 yum 方式安装 MySQL 1.1 删除系统自带的 MySQL 5.1 r ...
- 关于logback日志级别的配置
logback如果需要灵活的配置日志级别,需要结合过滤器,<filter></fiter>这个标签.需要注意的是,过滤器过滤的基础是在root标签的配置基础上进行的. 过滤器可 ...
- Odoo中的self详解
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826307.html 一:self是什么 目前新版的Odoo中使用到的self,是对 游标cr.用户ID ...
- 详解CentOS6.7部署Tomcat及主配置文件
Java程序实现部署及应用 POSIX :可移植操作系统,编程操作系统接口规范,实现跨平台编译运行. API:应用程序编程接口 ABI:应用程序二进制接口 描述了应用程序和操作系统之间,一个应用和它的 ...
- PHP写一个最简单的MVC框架
照网上看的.Framework.class.php文件是灵魂. <?php class Framework { public static function run() { //echo &qu ...
- 洛谷P2495 [SDOI2011]消耗战(虚树dp)
P2495 [SDOI2011]消耗战 题目链接 题解: 虚树\(dp\)入门题吧.虚树的核心思想其实就是每次只保留关键点,因为关键点的dfs序的相对大小顺序和原来的树中结点dfs序的相对大小顺序都是 ...
- 项目Beta冲刺(团队)--2/7
课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺 团队名称:葫芦娃队 作业目标:进行新一轮的项目冲刺,尽力完成并完善项目 团队博客 队员学号 队员昵称 博客地址 04160242 ...
- 学习:费马小定理 & 欧拉定理
费马小定理 描述 若\(p\)为素数,\(a\in Z\),则有\(a^p\equiv a\pmod p\).如果\(p\nmid a\),则有\(a^{p-1}\equiv 1\pmod p\). ...