ccf 201903-4 消息传递接口



题意:

有 t 个测试案例,每个测试案例有 n 个进程,每个进程一行,编号为 0~n-1。有两种操作 Rx(从 x 进程读取消息)  和 Sx(向 x 进程发出消息)。0号进程执行R1 ,则1号进程执行 S0 才能与0号进程匹配,否则会产生 ‘死锁’。不会从自己的进程收发消息。判断是否有死锁产生。

   用n个队列进行模拟

#include
#include
#include
#include
using namespace std;
struct node
{
    char s;  //操作
    int x;   //进程号
    node(char a,int b)
    {
        s = a;
        x = b;
    }
};
queue q[10010];
//队列数组,下标对应进程号,存放执行的命令
int t,n;

void prime()
{
    int flag = 1;   //判断是否有消去的命令
    //从0号进程到n-1号进程,队列中有消去则flag为1,重复执行,无消去则结束模拟过程
    while(flag)   
    {
        flag = 0;
        for(int i=0; i>t>>n;
    getchar();
    for(int i=0; i='0' && s[k]<='9')
                    {
                        x = x*10+s[k]-'0';
                        k++;
                    }
                    q[j].push(node(str,x));
                }
                k++;
            }
        }

        prime();

        bool flag = false;
        //当队列不为空时,有死锁产生
        for(int j=0; j

 

你可能感兴趣的:(模拟)