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 内 ...
随机推荐
- Beego 学习笔记9:Boostrap使用介绍
BootStrap布局 1> 下载地址: http://v3.bootcss.com/getting-started/#download 根据自己的需要,下载不同的版本.我这里使用的是1 ...
- vs2017 添加 mysql EF实体数据模型闪退
1.查看vs2017安装路径找到Mysql.Data.dll版本号与MySQL Connector Net版本是否一致 历史版本下载地址 http://mysql.inspire.net.nz/Dow ...
- ES6 笔记汇总
ES6 笔记汇总 二.ES6基础-let和const命令 三.变量的解构赋值 四.字符串的拓展 五.正则表达式的拓展 ...将会持续更新,敬请期待
- 使 WIN 10进入休眠、睡眠、关机的命令
1.用命令控制定时关机,重启,休眠等 休眠:rundll32.exe powrProf.dll,SetSuspendState 休眠:shutdown -h 睡眠:rundll32.exe powrp ...
- pycharm 里运行 django 工程 You must either define the environment variable DJANGO_SETTINGS_MODULE 错误
pycharm 里运行 django 工程出现错误(在命令行直接运行ok): django.core.exceptions.ImproperlyConfigured: Requested settin ...
- Mac 设置redis开机启动
1.创建一个plist文件 首先我们需要在/Library/LaunchDaemons目录下创建一个plist文件,使用如下命令: 复制代码代码如下: sudo vim /Library/Launch ...
- ARM架构体系
架构 处理器家族 ARMv1 ARM1 ARMv2 ARM2.ARM3 ARMv3 ARM6, ARM7 ARMv4 StrongARM.ARM7TDMI.ARM9TDMI ARMv5 ARM7EJ. ...
- 洛谷 P1522 牛的旅行 Cow Tours
题目链接:https://www.luogu.org/problem/P1522 思路:编号,然后跑floyd,这是很清楚的.然后记录每个点在这个联通块中的最远距离. 然后分连通块,枚举两个点(不属于 ...
- python应用-打印各种形状图
row = int(input('请输入行数: ')) for row in range(1,row): for col in range (1,row+1): print( (col),end='' ...
- PHP 验证Email的函数
<?php function validateEmail($email) { $isValid = true; $atIndex = strrpos($email, " ...