windows下Dev解10l7l3l倒水问题

1.讲解广度优先搜索以及普及优先级概念

一个最基础的

windows下Dev解10l7l3l倒水

然后使用for循环优化:

windows下Dev解10l7l3l倒水,for循环版本

核心代码:

b[0][0]=10; b[1][0]=7; b[2][0]=3;
b[0][1]=10; b[1][1]=0; b[2][1]=0;
//三杯子,初始只有10L的杯子是满的
// b[0][1]=1; b[1][1]=0; b[2][1]=0;
if(b[0][i]!=0){
//如果10L的杯子有酒
if(b[1][i]<7){
//如果7L的杯子没满
if(b[0][i]+b[1][i]<7){
//如果10L和7L杯子加起来不能补满7L的杯子
b[0][tail]=0;
b[1][tail]=b[1][i]+b[0][i];
//全倒入7L杯子
b[2][tail]=b[2][i];

欢迎来我们oj刷题 oj地址:http://60.205.225.45

2020.2.1做题日志

Applese有个神奇的能力

链接:https://ac.nowcoder.com/acm/challenge/terminal
来源:牛客网

Applese有个神奇的能力,TA可以把m个硬币融合成1个硬币,是不是很厉害。现在Applese有n个硬币,TA想把这个n个硬币融合成1个,请问他能完成吗?

输入描述:

输入两个整数n,m(1 ≤ n, m ≤ 109)

输出描述:

如果Applese能完成,输出"Yes",否则输出"No"。
示例1

输入

10 7

输出

No

别说了,上来先暴力了两发:

通过50%的代码

#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
int main(){
int a,b,c;
queue<int> q;
q.push(1);
scanf(“%d%d”,&a,&b);
while(q.empty()){
c=q.front();
q.pop();
c=c+b-1;
if(c==a){
printf(“Yes\n”);
return 0;
}
if(c<a)
q.push(c);
}
printf(“No\n”);
}

通过75%的代码

 #include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
int main(){
int a,b,c,d;
scanf(“%d%d”,&a,&b);
while(a>=b){
c=a%b;
d=a/b;
a=c+d;
}
if(a==1) printf(“Yes”);
else printf(“No”);
}

AC代码:

#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
int main(){
int a,b,c,d;
scanf(“%d%d”,&a,&b);
if(b==1){
if(a==1) printf(“Yes”);
else printf(“No”);
}else {
while(a>=b){
c=a%b;
d=a/b;
a=c+d;
}
if(a==1) printf(“Yes”);
else printf(“No”);
}
}

 

 

HNOI2001

链接:https://ac.nowcoder.com/acm/challenge/terminal
来源:牛客网

题目描述

某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消毒毛巾,这种消毒毛巾使用一天后必须再做消毒处理后才能使用。
消毒方式有两种,A种方式的消毒需要a天时间,B种方式的消毒需要b天(b > a),A种消毒方式的费用为每块毛巾fA, B种消毒方式的费用为每块毛巾fB,而买一块新毛巾的费用为f(新毛巾是已消毒的,当天可以使用);而且f > fA > fB
公司经理正在规划在这n天中,每天买多少块新毛巾、每天送多少块毛巾进行A种消毒和每天送多少块毛巾进行B种消毒。当然,公司经理希望费用最低。
你的任务就是:为该软件公司计划每天买多少块毛巾、每天多少块毛巾进行A种消毒和多少毛巾进行B种消毒,使公司在这项n天的软件开发中,提供毛巾服务的总费用最低。

输入描述:

第1行为n,a,b,f,fA,fB.
第2行为n1,n2,……,nn. (注:1 ≤ f,fA,fB ≤ 60,1 ≤ n ≤ 1000)

输出描述:

最少费用
示例1

输入

4  1  2  3  2  1                      
8  2  1  6

输出

38

算法一:最小费用最大流(BZOJ1221

 参考文档:
https://www.cnblogs.com/rmy020718/p/9548758.html
http://hzwer.com/2037.html

首先这是一道经典的网络流问题。每天建立两个节点,一个 i 表示使用毛巾,一个 i’ 表示这天用过的毛巾。

然后 i 向 T 连 Ai (第 i 天需要的毛巾数)。从 S 向 i’ 连 Ai ,这样这天新增的用过的毛巾就是 Ai 了。

然后 i’ 可以连向 (i+1)’ ,表示留到下一天再处理,i’ 还可以流向 i+p+1 和 i+q+1,表示洗了之后再次使用,这两种边是有费用的。

还有就是新购买毛巾,从 S 向 i 连,费用就是买新毛巾的费用。

这样,使用最小费用最大流就可以解决这道题了。

据说还有一个解法是三分。

三分比费用流快好多啊,学习学习

第十届蓝桥杯B组省赛第D题

试题 D: 数的分解 (40785

【问题描述】

把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法?

注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。

#include <stdio.h>

int main(){

int i,j,k;

int ii,jj,kk;

int cc=1,z,temp=0;

for(i=1;i<2019;i++)

{

for(j=i+1;j<2019;j++)

{

for(k=j+1;k<2019;k++)

{

if(i+k+j==2019){

ii=i;jj=j;kk=k;cc=1;

while(ii){

z=ii%10;

if(z==2&&ii!=0){

cc=0;break;

}

if(z==4&&ii!=0){

cc=0;break;

}

ii=ii/10;

}

while(jj){

z=jj%10;

if(z==2&&jj!=0){

cc=0;break;

}

if(z==4&&jj!=0){

cc=0;break;

}

jj=jj/10;

}

while(kk){

z=kk%10;

if(z==2&&kk!=0){

cc=0;break;

}

if(z==4&&kk!=0){

cc=0;break;

}

kk=kk/10;

}

if(cc) temp++;

}

}

}

}

printf(“%d”,temp);          //40785

}

欢迎来我们oj刷题 oj地址:http://60.205.225.45

windows下Dev解10l7l3l倒水,for循环版本

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct t{
int z[3];
int num;
int n[100];
}b[10050];
int stime=1; //数字越大.休眠时间越久
int m=0,i,j=0,k;
int time1=107,time2=103,time3=710,time4=73,time5=37,time6=310;
int head=1,tail=2,btime=0,bord;
void zzzz(){
b[tail].n[b[i].n[0]]=tail;
for(k=0;k<b[i].n[0];k++) b[tail].n[k]=b[i].n[k];
b[tail].n[0]++;
printf(“\n\t%d\t%d\t%d\n”,b[i].z[0],b[i].z[1],b[i].z[2]);
printf(“%d\t%d\t%d\t%d\n”,btime, b[tail].z[0],b[tail].z[1],b[tail].z[2]);
_sleep(stime*1000); //休眠时间单位ms
tail++;
}
int a[6][3]={
0,1,2,
0,2,1,
1,0,2,
1,2,0,
2,0,1,
2,1,0
};
int main()
{
b[0].z[0]=10; b[0].z[1]=7; b[0].z[2]=3;
b[1].z[0]=10; b[1].z[1]=0; b[1].z[2]=0; b[1].n[0]=2; b[1].n[1]=1;
//三杯子,初始只有10L的杯子是满的
// b[0][1]=1; b[1][1]=0; b[2][1]=0;
//三杯子,初始10L的杯子是满的
for(i=0;i<6;i++) {
for(j=0;j<3;j++) {
printf(“%d “,a[i][j]);
}
printf(“\n”);
}
m=0;
while(head<tail){
if(m==1) break;
btime++;
bord=tail;
for(i=head;i<bord;i++){
if(m==1) break;
printf(“\n%d\t%d\t%d\t%d\n”,btime,b[i].z[0],b[i].z[1],b[i].z[2]);
for(j=0;j<6;j++){
if(b[i].z[0]==5||b[i].z[1]==5||b[i].z[2]==5){ m=1;break; }
//找到55平分则退出
if(b[i].z[a[j][0]]!=0){      //如果第a[j][0]的杯子有水
if(b[i].z[a[j][1]]<b[0].z[a[j][1]]){
if(b[i].z[a[j][0]]+b[i].z[a[j][1]]<b[0].z[a[j][1]]){
b[tail].z[a[j][0]]=0;
b[tail].z[a[j][1]]=b[i].z[a[j][0]]+b[i].z[a[j][1]];
b[tail].z[a[j][2]]=b[i].z[a[j][2]];
}
else{
b[tail].z[a[j][0]]=b[i].z[a[j][0]]+b[i].z[a[j][1]]-b[0].z[a[j][1]];
b[tail].z[a[j][1]]=b[0].z[a[j][1]];
b[tail].z[a[j][2]]=b[i].z[a[j][2]];
}
zzzz();
if(b[tail-1].z[a[j][0]]==5||b[tail-1].z[a[j][1]]==5||b[tail-1].z[a[j][2]]==5){ m=1; break; }
}
}
}
}
head=bord;
}
if(m==1){
printf(“找到了!\n”);
for(k=1;k<b[tail-1].n[0];k++){
for(j=0;j<3;j++) printf(“%d\t”,b[b[tail-1].n[k]].z[j]);
printf(“\n”);
}
}
}

欢迎来我们oj刷题 oj地址:http://60.205.225.45

windows下Dev解10l7l3l倒水

题面:一个容积10L的水桶装满水,还有二个7L、3L的水桶无水,水不能倒到别的地方,要让10L的水桶里有5L水最少倒几次

需求:给大一学弟学妹讲解广度优先搜索

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int b[3][100005];
int stime=0; //数字越大.休眠时间越久
int m=0,i,j;
int time1=107,time2=103,time3=710,time4=73,time5=37,time6=310;
int head=1,tail=2,btime=0,bord;
void zzzz(){
_sleep(stime*1000); //休眠时间单位ms
printf(“\n\t%d\t%d\t%d\n”,b[0][i],b[1][i],b[2][i]);
printf(“%d\t%d\t%d\t%d\n”,btime, b[0][tail-1],b[1][tail-1],b[2][tail-1]);
if(b[1][tail-1]==5 || b[0][tail-1]==5){ m=1;}
}
int main()
{
b[0][0]=10; b[1][0]=7; b[2][0]=3;
b[0][1]=10; b[1][1]=0; b[2][1]=0;
//三杯子,初始只有10L的杯子是满的
// b[0][1]=1; b[1][1]=0; b[2][1]=0;
//三杯子,初始10L的杯子是满的
while(head<tail){
if(m==1) break;
btime++;
bord=tail;
for(i=head;i<bord;i++){
printf(“\n%d\t%d\t%d\t%d\n”,btime, b[0][i],b[1][i],b[2][i]);
if(m==1) break;
//找到55平分则退出
if(b[0][i]!=0){
//如果10L的杯子有酒
if(b[1][i]<7){
//如果7L的杯子没满
if(b[0][i]+b[1][i]<7){
//如果10L和7L杯子加起来不能补满7L的杯子
b[0][tail]=0;
b[1][tail]=b[1][i]+b[0][i];
//全倒入7L杯子
b[2][tail]=b[2][i];
zzzz();
}else{
//如果10L和7L杯子加起来补满7L的杯子
b[0][tail]=b[1][i]+b[0][i]-7;
b[1][tail]=7;
//7L杯子补满
b[2][tail]=b[2][i];
tail++;
zzzz();
}
}
if(b[2][i]<3){
//如果3L的杯子没满
if(b[0][i]+b[2][i]<3){
//如果10L和3L杯子加起来不能补满3L的杯子
b[0][tail]=0;
b[1][tail]=b[1][i];
b[2][tail]=b[2][i]+b[0][i];
//全倒入3L杯子
tail++;
zzzz();
}else{

//如果10L和3L杯子加起来补满3L的杯子
b[0][tail]=b[2][i]+b[0][i]-3;
b[1][tail]=b[1][i];
b[2][tail]=3;
//3L杯子补满
tail++;
zzzz();
}
}
} //10-7 10-3
if(b[1][i]!=0){
//如果7L的杯子有酒
if(b[0][i]<10){
//如果10L的杯子没满
if(b[0][i]+b[1][i]<b[0][0]){
//如果10L和7L杯子加起来不能补满10L的杯子
b[0][tail]=b[1][i]+b[0][i];
b[1][tail]=0;
b[2][tail]=b[2][i];
tail++;
zzzz();
}else{
//如果10L和7L杯子加起来补满10L的杯子
b[0][tail]=10;
b[1][tail]=b[1][i]+b[0][i]-10;
b[2][tail]=b[2][i];
tail++;
zzzz();
}
}
if(b[2][i]<3){
//如果3L的杯子没满
if(b[1][i]+b[2][i]<3){
//如果7L和3L杯子加起来不能补满3L的杯子
b[0][tail]=b[0][i];
b[1][tail]=0;
b[2][tail]=b[2][i]+b[1][i];
tail++;
zzzz();
}else{

//如果7L和3L杯子加起来补满3L的杯子
b[0][tail]=b[0][i];
b[1][tail]=b[1][i]+b[2][i]-3;
b[2][tail]=3;
tail++;
zzzz();
}
}
} //7-10 7-3
if(b[2][i]!=0){
//如果3L的杯子有酒
if(b[0][i]<10){
//如果10L的杯子没满
if(b[0][i]+b[2][i]<10){
//如果10L和3L杯子加起来不能补满10L的杯子
b[0][tail]=b[2][i]+b[0][i];
b[1][tail]=b[1][i];
b[2][tail]=0;
tail++;
zzzz();
}else{

//如果10L和3L杯子加起来能补满3L的杯子
b[0][tail]=10;
b[1][tail]=b[1][i];
b[2][tail]=b[0][i]+b[2][i]-10;
tail++;
zzzz();
}
}
if(b[1][i]<7){
//如果7L的杯子没满
if(b[2][i]+b[1][i]<7){
//如果3L和7L杯子加起来不能补满7L的杯子
b[0][tail]=b[0][i];
b[1][tail]=b[1][i]+b[2][i];
b[2][tail]=0;
tail++;
zzzz();
}else{
//如果3L和7L杯子加起来补满7L的杯子
b[0][tail]=b[0][i];
b[1][tail]=7;
b[2][tail]=b[2][i]+b[1][i]-7;
tail++;
zzzz();
}
}
} //3-7 3-10
}
head=bord;
}
if(m==1) printf(“\n%d\t%d\t%d\t%d\n”,m, b[0][i-1],b[1][i-1],b[2][i-1]);
}

 

欢迎来我们oj刷题 oj地址:http://60.205.225.45

什么是cookie?

什么是cookie?

Cookie 定义
“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。

Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie。

为什么要使用Cookie?

首先我们要知道一个概念,web程序是使用HTTP协议传输的,而HTTP协议是无状态的协议,对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

另一方面,在服务器不需要先前信息时它的应答就较快。

举个例子:比如你去跟老师请一天假,老师问了你一遍原因,准你请假。请假结束后你发现一天好像不够,然后你又去跟老师请假。老师又问了你一遍原因。

如果你是客户端,那么老师就是服务器端。你请假结束后,客户端和服务器端连接关闭,你要再次请假的话,客户端课服务器端需要重新连接,但是因为HTTP协议是无状态协议,服务器已经不知道你为什么来了,所以又问了你一次。而Cookie的产生弥补HTTP协议的不足。

Cookie什么时候产生?

Cookie的使用一先要看需求。因为浏览器可以禁用Cookie,同时服务端也可以不Set-Cookie。

一般来说,访问html不产生cookie,访问jsp,servlet产生cookie。客户端向服务器端发送一个请求的时,服务端向客户端发送一个cookie 然后浏览器将Cookie保存。

cookie有两种保存方式,一种是浏览器会将cookie保存在内存中,还有一种是保存在客户端的硬盘中,之后每次http请求浏览器都会将cookie发送给服务器端。

具体流程如下:
客户端提交一个HTTP请求给服务端
服务端这个时候做了两件事,一个是Set-Cookie,还有一个是提交响应内容给客户端 客户端再次向服务器请求时会在请求头中携带一个Cookie
服务端提交响应内容给客户端

举例:分登录之前和登录后,登录前服务端给浏览器一个Cookie,但是这个Cookie里面没有用户信息,但是登录成功之后,服务端给浏览器一个Cookie,这个时候的Cookie已经记录了用户的信息,在系统内任意访问,可以实现免登录。

Cookie的生存周期?

Cookie在生成时就会被指定一个maxAge值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。

有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。可以总结一下:

a、如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。

b、如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为–1。

c、如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除:

Cookie有哪些缺陷?

a、数量受到限制。一个浏览器能创建的 Cookie 数量最多为 300 个,并且每个不能超过 4KB,每个 Web 站点能设置的 Cookie 总数不能超过 20 个

b、安全性无法得到保障。通常跨站点脚本攻击往往利用网站漏洞在网站页面中植入脚本代码或网站页面引用第三方法脚本代码,均存在跨站点脚本攻击的可能。

在受到跨站点脚本攻击时,脚本指令将会读取当前站点的所有 Cookie 内容(已不存在 Cookie 作用域限制),然后通过某种方式将 Cookie 内容提交到指定的服务器(如:AJAX)。一旦 Cookie 落入攻击者手中,它将会重现其价值。

c、浏览器可以禁用Cookie,禁用Cookie后,也就无法享有Cookie带来的方便。

漫漫网络安全之路

前言:在信息安全范畴,客户机或者服务器被入侵都容易发现,唯独中间人攻击。简单来说,攻击者在请求和响应传输途中,拦截并篡改内容。

对于 HTTP 来说,由于设计的简单,不需要太多步骤就可以进行监听和修改报文。在这里主要是针对 HTTPS,HTTPS 使用了 SSL 加密协议,是一种非常安全的机制,目前并没有方法直接对这个协议进行攻击,一般都是在建立 SSL 连接时,利用中间人获取到 CA证书、非对称加密的公钥、对称加密的密钥;有了这些条件,就可以对请求和响应进行拦截和篡改。

特别的,某些特定APP由于自身安全问题不能抵御MITM,最多也只会影响到自己的APP及自己的用户,不过浏览器如果出现这种问题就会对使用者所有浏览的网站都有影响 。

特别是如果黑客拿到cookie就更糟糕了。

在正文之前我们先说一下tcp/ip协议:

而Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。

在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

前人已经给我们做了好多的事了,网络间的通信也就简单了许多,但毕竟还是有挺多工作要做的。

 

而java生下来一开始就是为了计算机之间的通信,因此我后面又去学了java。

操作系统大作业

题面:

进程控制块定义好后,考虑如何组织进程控制块。
多道程序设计系统中,往往同时创建多个进程。
在单处理器的情况下,每次只能有一个进程处于运行态,
其他的进程处于就绪状态或阻塞状态。为了便于管理,
通常把处于相同状态的进程的进程控制块链接在一起。
单处理器系统中,正在运行的进程只有一个。
因此,单处理器系统中的进程控制块分成三个队列:
①、一个正在运行进程的进程控制块;
②、就绪进程的进程控制块组成的就绪队列;
③、阻塞进程的进程控制块组成的阻塞队列。
由于实验模拟的是进程调度,没有对阻塞队列的操作,
所以实验中只有一个指向正在运行进程的进程控制块指针和一个就绪进程的进程控制块队列指针。
操作系统的实现中,系统往往在主存中划分出一个连续的专门区域存放系统的进程控制块,
实验中应该用数组模拟这个专门的进程控制块区域,定义如下:
#define     n       10               //假定系统允许进程个数为10
struct   pcb     pcbarea[n];        //模拟进程控制块区域的数组
这样,进程控制块的链表实际上是数据结构中使用的静态链表。
进程控制块的链接方式可以采用单向和双向链表,
实验中,进程控制块队列采用单向静态链表。为了管理空闲进程控制块,
还应该将空闲控制块链接成一个队列。
实验中采用时间片轮转调度算法,这种算法是将进程控制块按照进入就绪队列的先后次序排成队列。
对就绪队列的操作就是从队头摘下一个进程控制块和从队尾挂入一个进程控制块。
因此为就绪队列定义两个指针,一个头指针,指向就绪队列的第一个进程控制块;
一个尾指针,指向就绪队列的最后一个进程控制块。
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#define N 5
//#define M 1
//int N;
typedef struct node //PCB结构
{
int name;
    char state;//进程状态
int ax, bx, cx,dx;
struct node *next;
int anum,bnum;
}PCB;
PCB *ready,*tail;
PCB *aold;
void insert(PCB *q)//新进程尾插入就绪队列
{
if(ready==NULL)
{
q->next=ready;
ready=q;
tail=q;
}
else
{
tail->next=q;
tail=q;
q->next=NULL;
}
}
void judge(PCB *q)//判断
{
if(q->bnum–>0)
{
*ready=*ready->next;
aold->next=q;
aold=q;
q->next=NULL;
}
else
{
*ready=*ready->next;
q->ax–;
insert(q);
}
}
void create() //进程创建
{
PCB *p;
int i,name;
for(i=1;i<=N;i++)
{
  p=(PCB *)malloc(sizeof(PCB));
    printf(“输入进程名:\n”);
//   scanf(“%d”,&name);
    name=i;
  p->name=name;
  p->state=’W’;
  p->ax=i;p->bx=i;p->cx=i;p->dx=i;
  p->anum=p->ax+10;
  p->bnum=p->ax+10;
  insert(p);
}
 }
void show()
{
PCB *aol=ready;
while(aol!=NULL)
{
printf(“id=%d,state=%c,AX=%d,BX=%d,CX=%d,DX=%d\n”,aol->name,aol->state,aol->ax,aol->bx,aol->cx,aol->dx);
aol=aol->next;
}
}
void show2()
{
PCB *aol=aold;
while(aol!=NULL)
{
printf(“id=%d,state=%c,AX=%d,BX=%d,CX=%d,DX=%d\n”,aol->name,aol->state,aol->ax,aol->bx,aol->cx,aol->dx);
aol=aol->next;
}
}
int main()
{
printf(“输入进程的个数:\n”);
// scanf(“%d”,&N);
create(); //创建进程
//    show();//输出检查
while(ready!=NULL){
//printf(“id=%d,state=%c,AX=%d,BX=%d,CX=%d,DX=%d\n”,ready->name,ready->state,ready->ax,ready->bx,ready->cx,ready->dx);
judge(ready);
show2();//输出检查
}
//timecycle(); //时间片轮转调度
return 0;
}