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 内 ...
随机推荐
- 2019-08-01 jquery中常用方法
1.attr()方法设置或返回被选元素的属性值 <html> <meta charset="utf-8"/> <head><title&g ...
- Serverless
一.介绍 是指依赖于第三方应用程序或服务来管理服务器端逻辑的应用程序. 此类应用程序是基于云的数据库(如Google Firebase)或身份验证服务. 无服务器也意味着开发为事件触发的代码,并且在无 ...
- 英语partschinite芬达石partschinite锰铝榴石
partschinite指锰铝榴石,属于石榴石的一种,由于它有芬达饮料的诱人颜色,大家也称其为“芬达石”.石榴石宝石族中重要品种之一,化学成分为锰铝硅酸盐,颜色从红到橙红,红到棕红,玫瑰红.浅玫红均有 ...
- android中的webview白屏问题
最近在使用WebView的时候,发现了一个小问题,很多初学者应该会注意不到! WebView的layerType属性有三个值. 1.none,默认值, 2.software,软件加速, 3.hard ...
- YUV详解
YUV格式解析2 又确认了一下H264的视频格式——H264支持4:2:0的连续或隔行视频的编码和解码 YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL).YUV主要用 ...
- 虚拟机安装mysql踩坑记录
本章节主要讲解的是在虚拟机centOs7版本以上安装mysql5.6版本,亲测可以直接使用,有需要帮助的小伙伴可以加本人QQ2246451792@qq.com!!!! 卸载centOs7自带的mari ...
- CentOS7 安装 浏览器
firefox(火狐) sudo yum install firefox chrome(谷歌) 添加源:sudo wget http://repo.fdzh.org/chrome/google-chr ...
- Miniconda
什么是conda conda的基本使用方式 conda是一个开源包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换. 它适用于Linux,OS X和Windows,是 ...
- 关于SQL优化
建立索引常用的规则 表的主键.外键必须有索引: 数据量超过300的表应该有索引: 经常与其他表进行连接的表,在连接字段上应该建立索引: 经常出现在Where子句中的字段,特别是大表的字段,应该建立索引 ...
- vue.js生成S型拓扑图
1.前端代码 <link href="https://magicbox.bk.tencent.com/static_api/v3/assets/bootstrap-3.3.4/css/ ...