time 
设为首页】【收藏本站
当前位置: 主页 > 程序设计 > C\C++\VC > C语言 > 恺撒的规化问题

恺撒的规化问题

时间:2009-09-20 23:31 点击:526次 字体:[ ]




    问题描述:

    亚特兰蒂斯是一块富饶美丽的土地.恺撒大帝率领他的大军,经过了一整年的浴血奋战,终于将它纳入了罗马的版图.然而,长期的战火彻底抹去了这里的繁华,昔日的富庶之地如今一片荒芜.恺撒大帝作为一位有着雄才大略的君主,决定在战争的废墟上建起一座更为宏伟的城市.所以,在建城之前,他需要对整个城市进行规划.

        亚特兰蒂斯是一块矩形平原,恺撒准备在上面修建一些建筑.为了规划方便,他将矩形划分成N*M格.棘手的是,部分古老的神庙残存下来,散布在某些格子内.亚特兰蒂斯的原住民本就十分信奉神灵,而这些经过战火洗礼的神庙被他们视为圣物,是万万不能拆除的,否则将激起民愤,甚至引发暴动.恺撒深知这一点,因此,他的新建筑在选址时要避开这些神庙.

        假设新的建筑物有P种规格,每种建筑物都是正方形的,占地为Ti*Ti格(1<=i<=P).恺撒想知道对于每种规格的建筑,有多少种不同的合适选址方案(一种合适的选址方案指的是在该建筑所占的正方形区域内不存在神庙).

        输入:

        输入文件第一行包含三个数,分别代表N,M,P(1<=N,M<=2000,1<=P<=1000).随后的N行,每行有M个0或1(1表示该格为废墟,0表示该格有神庙).接下来的P行每行有一个整数Ti(1<Ti<=max(M,N)),代表的第i种建筑物的边长.

        输出:

        输出文件有P行,每行一个整数,每行的数代表边长为Ti的建筑物选址方案数.

    样例输入(spuares.in):

      4 4 2

      1011

      1111

      1110

      1110

      2

      3

    样例输出(squares.out):

 

      5

      1

    /*********************
      ksexe.c
      Turboc2.01下编译通过
    **********************/
    #include "stdio.h"
    #include "conio.h"
    #include "time.h"
    main()
    {
      FILE *fp,*fout;                /* 定义输入输出文件指针     */
      int N,M,P,T[1000],Tout[1000];  /* 定义行N,列M,与规格P变量,及规格与输出数组 */
      int count,linecount;           /* 定义计数变量与行计数变量 */
      long X,DATA_START,DATA_END,DataXPos,DataYpos,Pcount,Xpos,Ypos;  /* 定义有关的位置变量 */
      int DATA,textY;                /* 定义数据变量DATA         */
      void *tmp=0;                   /* 定义暂存指针变量         */
      clock_t start,end;             /* 定义计时变量             */
      float percent=0.0,TIME=0.0;    /* 定义完成百分比与时间变量 */
      Pcount=0;count=0;linecount=0;  /* 赋初值               */
      fp=fopen("squares.in","r");    /* 打开输入文件       */
      if(fp==NULL)                   /* 若未打开,则显示出错      */
       {
       printf("File squares.in Not Found!");
       exit(1);
       }
       fscanf(fp,"%d %d %d",&N,&M,&P);         /* 读取N,M,P                */
       DATA_START=ftell(fp)+2L;                /* 得数据起始位置DATA_START */
       printf(" N=%d,M=%d,P=%d",N,M,P);       /* 在屏幕上输出N,M,P        */
       /* 动态分配内存             */
       /*if((T=malloc(P))==NULL)
        {
          printf("Not enough Memory!");
          exit(1);
        } */
        fseek(fp,N*(M+2L)+2L,SEEK_CUR);        /* 文件的位置指示定位于规格起始处 */
        DATA_END=ftell(fp);                    /* 得到数据结束位置DATA_END       */



本文地址 : http://www.fengfly.com/plus/view-77260-1.html
标签: 恺撒规化
------分隔线----------------------------
相关文章
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:
本栏分类