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 }
  • 相关阅读:
    石家庄地铁线路查询系统(补)
    构建之法阅读笔记03
    构建之法阅读笔记02
    Day 3-3 内置方法
    Day3-2 函数之递归
    Day3-1 函数
    Day2 列表,元组,字典,集合
    Day1 基础知识
    Day1. Python基础知识
    iptables防火墙配置
  • 原文地址:https://www.cnblogs.com/syiml/p/2909880.html
Copyright © 2011-2022 走看看