zoukankan      html  css  js  c++  java
  • 291 The House Of Santa Claus

    题目大意
    题目原文 http://uva.onlinejudge.org/external/2/291.pdf

    题目要求一笔画成那个房子的图案,将所有的情况按从大到小的顺序打印出来。

    定义一个二维数组如下:
    a 1 2 3 4 5
    1 0 1 1 0 1
    2 1 0 1 0 1
    3 1 1 0 1 1
    4 0 0 1 0 1
    5 1 1 1 1 0

    如a[1][2]=a[2][1]=1表示点2和点1是连通的,0表示不连通。
    然后逐个尝试。走过的路线将其赋值2。

    首先,从1出发,则dot=1;
    然后从a[1]这行开始查找值为1的编号,这里是2,则dot=2,再循环;


    附上代码:

    View Code
     1 #include<stdio.h>
     2 int main()
     3 {
     4  int a[8][8]={{0},{0,0,1,1,0,1},{0,1,0,1,0,1},{0,1,1,0,1,1},{0,0,0,1,0,1},{0,1,1,1,1,0},{0}},b[11]={1},line=1,bo=0,n=1,dot=1,i,j;
     5  while(n!=0)//最后n退到0的时候说明已经找完了所有的路线
     6  {
     7   for(i=b[n]+1;;i++)//i=b[n+1]是为了不重复走死路
     8   {
     9    if(a[dot][i]==1)
    10    {
    11     a[dot][i]=a[i][dot]=2;//赋值为2表示这条线已经走过了
    12     b[n]=i;
    13     n++;
    14     break;
    15    }
    16    if(n==9)//已经完成一条路线,输出
    17              {
    18               for(j=0;j<=8;j++) 
    19                      printf("%d",b[j]);
    20               printf("\n");
    21               i=5;//为了让它进入下面的个if语句
    22              }
    23    if(i>=5)//死路(已经找到一条,开始找下一条路线),往后退一位
    24    {
    25     n--;
    26     b[n+1]=0;
    27     a[b[n]][b[n-1]]=a[b[n-1]][b[n]]=1;//将退回来的路线重新赋值为1
    28     bo=1;
    29     break;
    30    }
    31   }
    32   if(bo==0) dot=i;
    33    else dot=b[n-1];//bo==1表示退了一位
    34   bo=0;
    35  }
    36  return 0;
    37 }
  • 相关阅读:
    数据结构一
    MVC5.0(一)
    异步多线程(六)lock锁
    异步多线程(五)多线程异常处理
    异步多线程(四)Task
    paypal payflow设置视频教程
    Java栈Stack知识点
    Java知识树梳理
    js定时器
    jdk环境变量配置改变不生效的问题
  • 原文地址:https://www.cnblogs.com/syiml/p/2909880.html
Copyright © 2011-2022 走看看