⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 random_cy.cpp

📁 总共80多道题的POJ详细解题报告
💻 CPP
字号:
#include<string.h>
char t[100];
char proc[101][100],gotoproc[101][200][100];
int command[101][200],gotoline[101][200];
int i,j,k;
double rate[101][200];
double t1;
double time[101][200];
 
double dotime(int i,int j,double r)
{double s=0,f=1;
 int a,b;              
 if(r<0.00000000000000000000000000000000000000000000000000001) return(0);
 a=i,b=j;
 if(time[i][j]!=-1) return(time[i][j]);
 for(;;j++)
  {if(command[i][j]==0) break;
   if(command[i][j]==1) s=s+1*f;  
   if(command[i][j]==2) 
    {s=s+1*f+f*rate[i][j]*dotime(i,gotoline[i][j],r*f*rate[i][j]);f=f*(1-rate[i][j]);}
   if(command[i][j]==3)
    {for(k=1;;k++)
      if(strcmp(gotoproc[i][j],proc[k])==0) break;
     s=s+1*f+f*rate[i][j]*dotime(k,1,r*f*rate[i][j]);
    }
  }
 time[a][b]=s;
 return(s);
}

main()
{for(i=1,j=1;;)
 {scanf("%s",t);
  if(strcmp(t,"NOP;")==0)
   {command[i][j]=1;j++;}   

  else if(strcmp(t,"IF")==0)
   {scanf("%c%c%c%lf",&t[0],&t[1],&t[2],&t1);
    if(t[2]=='>') rate[i][j]=1-t1;
    else rate[i][j]=t1;
    scanf("%s",t);
    if(strcmp(t,"GOTO")==0) 
     {command[i][j]=2;
      scanf("%d%c",&gotoline[i][j],&t[0]);
     }
    else if(strcmp(t,"PROC")==0)
     {command[i][j]=3;
      scanf("%c",&t[0]);
      for(k=0;;k++)
       {scanf("%c",&gotoproc[i][j][k]);
        if(gotoproc[i][j][k]==';') break;
       }
      gotoproc[i][j][k]='\0';
     }  
    j++;
   }
  else if(strcmp(t,"END;")==0)
   {command[i][j]=0;i++;j=1;}
  else if(strcmp(t,"PROC")==0)
   scanf("%s",&proc[i][0]);
  else if(strcmp(t,"PROG END")==0) break;
 }

 for(i=1;i<=100;i++)
  for(j=1;j<=200;j++)
   time[i][j]=-1; 
 for(;;)
 {scanf("%s",t);
  if(strcmp(t,"REQUEST END")==0) break;
  for(i=1;;i++)
   if(strcmp(t,proc[i])==0) break;
  printf("%.3lf\n",dotime(i,1,1));
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -