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

九度教程第87題

編輯:C++入門知識

C語言源碼: [cpp]  #include<stdio.h>   #define maxsize 10000000   int queue[10000000][3];   int mark[110][110][110];   int main()   {       int s,n,m,i,j,k,front,rear,flag,num,f;       scanf("%d %d %d",&s,&n,&m);       while(s||n||m)       {           for(i=0;i<110;i++)               for(j=0;j<110;j++)                   for(k=0;k<110;k++)                       mark[i][j][k]=0;           front=0;           rear=1;           flag=1;           num=0;           f=-1;           queue[0][0]=s;           queue[0][1]=0;           queue[0][2]=0;           if(s%2==1)               printf("NO\n");           else           {               while(front!=rear)               {                   i=queue[front][0];                   j=queue[front][1];                   k=queue[front][2];                   front=(front+1)%maxsize;                   if(mark[i][j][k]!=1)                   {                       mark[i][j][k]=1;                       if((i==s/2&&j==s/2)||(i==s/2&&k==s/2)||(j==s/2&&k==s/2))                       {                           f=1;                           break;                       }                       if((i<=n-j)&&mark[0][j+i][k]==0)                       {                           queue[rear][0]=0;                           queue[rear][1]=j+i;                           queue[rear][2]=k;                           rear=(rear+1)%maxsize;                       }                       else if((i>n-j)&&(mark[i-(n-j)][n][k]==0))                       {                           queue[rear][0]=i-(n-j);                           queue[rear][1]=n;                           queue[rear][2]=k;                           rear=(rear+1)%maxsize;                       }                       if((i<=m-k)&&mark[0][j][k+i]==0)                       {                           queue[rear][0]=0;                           queue[rear][1]=j;                           queue[rear][2]=k+i;                           rear=(rear+1)%maxsize;                       }                       else if((i>m-k)&&(mark[i-(m-k)][j][m]==0))                       {                           queue[rear][0]=i-(m-k);                           queue[rear][1]=j;                           queue[rear][2]=m;                           rear=(rear+1)%maxsize;                       }                       if((j<=s-i)&&mark[i+j][0][k]==0)                       {                           queue[rear][0]=i+j;                           queue[rear][1]=0;                           queue[rear][2]=k;                           rear=(rear+1)%maxsize;                       }                       else if((j>s-i)&&(mark[s][j-(s-i)][k]==0))                       {                           queue[rear][0]=s;                           queue[rear][1]=j-(s-i);                           queue[rear][2]=k;                           rear=(rear+1)%maxsize;                       }                       if((j<=m-k)&&mark[i][0][k+j]==0)                       {                           queue[rear][0]=i;                           queue[rear][1]=0;                           queue[rear][2]=k+j;                           rear=(rear+1)%maxsize;                       }                       else if((j>m-k)&&(mark[s][j-(m-k)][m]==0))                       {                           queue[rear][0]=i;                           queue[rear][1]=j-(m-k);                           queue[rear][2]=m;                           rear=(rear+1)%maxsize;                       }                       if((k<=s-i)&&mark[i+k][j][0]==0)                       {                           queue[rear][0]=i+k;                           queue[rear][1]=j;                           queue[rear][2]=0;                           rear=(rear+1)%maxsize;                       }                       else if((k>s-i)&&(mark[s][j][k-(s-i)]==0))                       {                           queue[rear][0]=s;                           queue[rear][1]=j;                           queue[rear][2]=k-(s-i);                           rear=(rear+1)%maxsize;                       }                       if((k<=n-j)&&mark[i][j+k][0]==0)                       {                           queue[rear][0]=i;                           queue[rear][1]=j+k;                           queue[rear][2]=0;                           rear=(rear+1)%maxsize;                       }                       else if((k>n-j)&&(mark[i][n][k-(n-j)]==0))                       {                           queue[rear][0]=i;                           queue[rear][1]=n;                           queue[rear][2]=k-(n-j);                           rear=(rear+1)%maxsize;                       }                   }                   if(front==flag)                   {                       flag=rear;                       num++;                   }               }               if(f==-1)                   printf("NO\n");               else                   printf("%d\n",num);           }           scanf("%d %d %d",&s,&n,&m);;       }   }    

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