程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 九度教程第86題

九度教程第86題

編輯:C++入門知識

C語言源碼: [cpp]   #include<stdio.h>   int s[51][51][51];   int queue[500000][3];   int main()   {       int i,j,k,T,n,a,b,c,front,rear,num,flag;       while(scanf("%d",&n)!=EOF)       {           while(n--)           {               scanf("%d %d %d %d",&a,&b,&c,&T);               for(i=0;i<a;i++)                   for(j=0;j<b;j++)                       for(k=0;k<c;k++)                           scanf("%d",&s[i][j][k]);               if(s[a-1][b-1][c-1]==1)               {                   printf("-1\n");                   continue;               }               s[0][0][0]=0;               front=0;               rear=0;               num=0;               flag=1;               queue[0][0]=0;               queue[0][1]=0;               queue[0][2]=0;               rear++;               while(front!=rear)               {                   i=queue[front][0];                   j=queue[front][1];                   k=queue[front][2];                   front++;                   if(s[i][j][k]!=1)                   {                       s[i][j][k]=1;                       if(i==a-1&&j==b-1&&k==c-1)                           break;                       if(i>0&&s[i-1][j][k]==0)                       {                           queue[rear][0]=i-1;                           queue[rear][1]=j;                           queue[rear][2]=k;                           rear++;                       }                       if(i<a-1&&s[i+1][j][k]==0)                       {                           queue[rear][0]=i+1;                           queue[rear][1]=j;                           queue[rear][2]=k;                           rear++;                       }                       if(j>0&&s[i][j-1][k]==0)                       {                           queue[rear][0]=i;                           queue[rear][1]=j-1;                           queue[rear][2]=k;                           rear++;                       }                       if(j<b-1&&s[i][j+1][k]==0)                       {                           queue[rear][0]=i;                           queue[rear][1]=j+1;                           queue[rear][2]=k;                           rear++;                       }                       if(k>0&&s[i][j][k-1]==0)                       {                           queue[rear][0]=i;                           queue[rear][1]=j;                           queue[rear][2]=k-1;                           rear++;                       }                       if(k<c-1&&s[i][j][k+1]==0)                       {                           queue[rear][0]=i;                           queue[rear][1]=j;                           queue[rear][2]=k+1;                           rear++;                       }                   }                   if(front==flag)                   {                       flag=rear;                       num++;                   }               }               if(num<=T&&s[a-1][b-1][c-1]==1)                   printf("%d\n",num);               else                   printf("-1\n");           }       }   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved