首页 > 其他分享 >洛谷 P1789【Mc生存】插火把

洛谷 P1789【Mc生存】插火把

时间:2022-10-30 13:56:03浏览次数:64  
标签:洛谷 Mc int 火把 P1789 COLUMN max inRange ROW

萌新写的代码,长但模块化

#include <stdio.h>
#define ROW 100
#define COLUMN 100
int map[ROW][COLUMN];
/*    函数测试数据={1,1,1,0,0,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0};*/

int ArrayIndexInRange(int init,int incre,int max){
    // 防止数组越界
    int inRange=init+incre;
    if (inRange <0){
        return 0;
    }else if (inRange>=max){
        return max-1;
    }else {return inRange;};
};
enum Lights{Torch,Fluorite};//火把和萤石

//火把和萤石能照亮的范围(相对坐标)
int TorchIllumination[13][2]={-2,0,-1,-1,-1,0,-1,1,0,-2,0,-1,0,0,0,1,0,2,1,-1,1,0,1,1,2,0};
int FluoriteIllumination[25][2];
int *pF=&FluoriteIllumination[0][0];

struct Light{    //光源结构体
    int positionX,positionY;
    int type;//0为火把,1为萤石;
};
int sum=0;
void PlaceLight(struct Light t,int map[ROW][COLUMN],int row,int column){
    //放置光源    printf("%d %d",t.positionX,t.positionY);
    int loopingTime =13;int *lightingRange=&TorchIllumination[0][0];
    int x,y,offset[2];
    if (t.type){loopingTime = 25;lightingRange = &FluoriteIllumination[0][0];}
    for (int lighting=0;lighting<loopingTime;lighting++){//printf("%d\n",map[t.positionX][t.positionY]);//for (int i =0;)
        offset[0]=lightingRange[2*lighting];offset[1]=lightingRange[2*lighting+1];
        x=ArrayIndexInRange(t.positionX,offset[0],ROW);
        y=ArrayIndexInRange(t.positionY,offset[1],COLUMN);
        map[x][y]=1;
    };
};
void PrintfNumArray(int *p,int row,int column,int containerColumn){
    //    筛选2维数组(地图)的有效部分并_输出
    int item,line,wrap=column-1,spot;
    for (line=0;line<row;line++){
        for (item=0;item<column;item++){
            spot=p[line*containerColumn+item];
            if (!spot){sum+=1;};
            //printf("%2d",spot);
            //if (item%column==wrap) {printf("\n");}
        };
    };
};
int main(){
    for (int loop0=-2;loop0<3;loop0++){for (int loop1=-2;loop1<3;loop1++){*pF++=loop0;*pF++=loop1;};};
        //PrintfNumArray(&map[0][0],3,4,5);//PrintfNumArray(&FluoriteIllumination[0][0],25,2,2);//printf("%d",TorchIllumination[2][1]);
        //struct Light t={3,4,0};    // *(&map[0][0]+34)=1;
    int n,m,k,positions[25][2];
    int *_positions = &positions[0][0];
    scanf("%d%d%d",&n,&m,&k);
    int lightsPlaced;
    
    for (int scaner=0;scaner<m+k;scaner++){
        scanf("%d%d",&_positions[scaner*2],&_positions[scaner*2+1]);
    };
    
    struct Light aTorch={0,0,0};struct Light aFluorite={0,0,1};
    for (lightsPlaced=0;lightsPlaced<m;lightsPlaced++){
        aTorch.positionX = _positions[lightsPlaced*2];
        aTorch.positionY = _positions[lightsPlaced*2+1];
        PlaceLight(aTorch,map,ROW,COLUMN);
    };
    for (lightsPlaced=m;lightsPlaced<m+k;lightsPlaced++){
        aFluorite.positionX = _positions[lightsPlaced*2];
        aFluorite.positionY = _positions[lightsPlaced*2+1];
        PlaceLight(aFluorite,map,ROW,COLUMN);
    };
    
    //PlaceLight(t,map,ROW,COLUMN);
    PrintfNumArray(&map[0][0],n,n,COLUMN);
    printf("%d\n",sum);
       return 0;
};
  

不过要注意点是,这是另写的代码。

确实有种MC的味道。

题目是以1,1为坐标原点的,所以应该把所有题目给的坐标的横纵坐标均减去一输入这个程序。并且题目只要输出有多少个点是黑暗的,并不要求显示地图的样子(所以那两行被注释掉了)。

标签:洛谷,Mc,int,火把,P1789,COLUMN,max,inRange,ROW
From: https://www.cnblogs.com/embers-/p/16841134.html

相关文章

  • 同一个tomcat 共享session
    问题记录 最近学整理java项目session常常用来存储一些公共信息供不同页面访问,比如用户登录信息。访问同一个tomcat下的不同项目所创建的session是不一样的。自然地面临了如......
  • Tomcat目录介绍,常见的启动失败
    目录介绍:bin      专门用来存放Tomcat服务器的可执行程序conf     专门用来存放Tomcat服务器的配置文件lib       专门用来存放To......
  • Java安全之Tomcat6 Filter内存马
    Java安全之Tomcat6Filter内存马回顾Tomcat8打法先回顾下之前Tomcat789的打法这里先抛开78之间的区别,在8中,最后add到filterchain的都是一个filterconfig对象Applica......
  • 洛谷P8539 「Wdoi-2」来自地上的支援 题解
    ST表做法思路当进行第\(x\)次操作时,若\(b_1\)到\(b_{x-1}\)中有比\(b_x\)大的数,那这次操作轮不到\(b_x\),并且前面的本来就比它大的数只会越来越大,所以以后的......
  • 强制关闭Tomcat
    背景由于应用项目及其复杂,应用自己开启的线程在tomcat停止时没有关闭,便会导致tomcat进程没有终止。但是tomcat监听的端口却已经释放,因为执行shutdown.sh脚本时,tomcat自身......
  • 米联客FMC-3G SDI视频拓展子卡全新上市!
    FMC-3GSDI子卡测试1.1概述使用FMC-3GSDI子卡来实现FPGA通过GTH高速收发器从同轴电缆接收3G-SDI信号,并通过FIFO回环导出SDI信号到同轴电缆输出。1.2外......
  • P1597洛谷刷题
    #include<iostream>#include<string>usingnamespacestd;intmain(intargc,char**argv){ stringstr="a:=3;b:=4;c:=5"; for(inti=1;i<=3;i++){ ints......
  • Nginx代理后端Tomcat
    拉取镜像并运行dockerpullnginx:1.23dockerpulltomcat:8dockerrun-dnginx:1.23dockerrun-dtomcat:8进入nginx容器安装vim命令并备份安装vim命令apt-get......
  • Spring Boot系列之修改内置Tomcat版本
    背景在springboot出来之前,或者没有使用springboot时,JavaEE开发时如果选择tomcatservlet,需要自己指定tomcat版本;此处没有考虑那种直接把打包的war直接扔到本地......
  • 贝叶斯推理三种方法:MCMC 、HMC和SBI
    对许多人来说,贝叶斯统计仍然有些陌生。因为贝叶斯统计中会有一些主观的先验,在没有测试数据的支持下了解他的理论还是有一些困难的。本文整理的是作者最近在普林斯顿的一个......