现在的位置: 首页 > 综合 > 正文

非常可乐

2018年05月10日 ⁄ 综合 ⁄ 共 1041字 ⁄ 字号 评论关闭

#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int h,a,b;
struct Node{
 int x;
 int y;
 int z;
 int v;
};
int vis[101][101][101];

void bfs(int a1,int a2,int a3){
 queue<Node>q;
 Node q1,q2;
 q1.x=a1;
 q1.y=0;
 q1.z=0;
 q1.v=0;

 q.push(q1);
 
 
 memset(vis,0,sizeof(vis));
 while(!q.empty()){
  q2=q.front();
  vis[q2.x][q2.y][q2.z]=1;
  
  if(q2.x==a1/2&&q2.y==a1/2||q2.x==a1/2&&q2.z==a1/2||q2.z==a1/2&&q2.y==a1/2){
   printf("%d\n",q2.v);
      break;
  }
  else{
   if(q2.x!=0){
    if(q2.x>a2-q2.y){
     q1.x=q2.x+q2.y-a2;
     q1.y=a2;
     q1.z=q2.z;
     q1.v=q2.v+1;
               }
    else{
     q1.x=0;
     q1.y=q2.x+q2.y;
     q1.z=q2.z;
     q1.v=q2.v+1;
               }
    if(vis[q1.x][q1.y][q1.z]==0){
     vis[q1.x][q1.y][q1.z]=1;
     q.push(q1);
    
               }
    
    if(q2.x>a3-q2.z){
     q1.x=q2.x+q2.z-a3;
     q1.y=q2.y;
     q1.z=a3;
     q1.v=q2.v+1;
               }
    else{
     q1.x=0;
     q1.y=q2.y;
     q1.z=q2.z+q2.x;
     q1.v=q2.v+1;
               }
    if(vis[q1.x][q1.y][q1.z]==0){
     vis[q1.x][q1.y][q1.z]=1;
     q.push(q1);
     
       

抱歉!评论已关闭.