首页 > 其他分享 >poj-1120

poj-1120

时间:2023-05-23 16:03:12浏览次数:35  
标签:20 columnId 1120 ++ int poj rowId dish


//408K  16MS    G++
#include <cstdio>
#include <cstring>

using namespace std;

int dish[20][20];
int K[20][20];

int D[16];

int days;

int getDensitySum(int rowId, int columnId) {
    int K = 0;
    K += dish[rowId][columnId];
    if (rowId > 0) {
        K += dish[rowId-1][columnId];
    }
    if (rowId < 19) {
        K += dish[rowId+1][columnId];
    }
    if (columnId > 0) {
        K += dish[rowId][columnId - 1];
    }
    if (columnId < 19) {
        K += dish[rowId][columnId + 1];
    }
    return K;
}

void simulate() {

    for (int rowId = 0; rowId < 20; rowId++) {
        for (int columnId = 0; columnId < 20; columnId++) {
            K[rowId][columnId] = getDensitySum(rowId, columnId);
        }
    }

    for (int rowId = 0; rowId < 20; rowId++) {
        for (int columnId = 0; columnId < 20; columnId++) {
            dish[rowId][columnId] += D[K[rowId][columnId]];
            if (dish[rowId][columnId] > 3) {
                dish[rowId][columnId] = 3;
            } else if (dish[rowId][columnId] < 0) {
                dish[rowId][columnId] = 0;
            }
        }
    }
}

void solve() {
    for (int i = 1; i <= days; i++) {
        simulate();
    }
    for (int rowId = 0; rowId < 20; rowId++) {
        for (int columnId = 0; columnId < 20; columnId++) {
            char c = '.';
            if (dish[rowId][columnId] == 1) {
                c = '!';
            } else if (dish[rowId][columnId] == 2) {
                c = 'X';
            } else if (dish[rowId][columnId] == 3) {
                c = '#';
            }
            if (columnId < 19) {
                printf("%c", c);
            } else if (columnId == 19) {
                printf("%c\n", c);
            }
        }
    }
}

int main() {
    scanf("%d", &days);
    for (int i = 0; i < 16; i++) {
        scanf("%d", &D[i]);
    }
    for (int rowId = 0; rowId < 20; rowId++) {
        for (int columnId = 0; columnId < 20; columnId++) {
            scanf("%d", &dish[rowId][columnId]);
        }
    }

    solve();
}



模拟水题,注意最后输出格子之间是没有空格.



标签:20,columnId,1120,++,int,poj,rowId,dish
From: https://blog.51cto.com/u_9420214/6332977

相关文章

  • poj-3641
    //712K0MSG++#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>usingnamespacestd;longlonga,p;//longlongpower2(longlonga,longlongn)//{//longlongret=1;//for(longlongm......
  • poj-1026
    //188K110MSC++#include<cstring>#include<cstdio>#include<iostream>usingnamespacestd;charstr1[205];charstr2[205];intkey[205];intcycleLength[205];//voidreplace(char*str,intkeyLength,intstrLength){//......
  • poj-2707
    //408K0MSG++#include<cstdio>#include<cstring>usingnamespacestd;intoX;intoY;intdX;intdY;inlinedoubleMIN(doublea,doubleb){returna<b?a:b;}inlinedoubleMAX(doublea,doubleb){returna>b?......
  • poj-2635
    //1652K875MSG++1000//1648K1313MSG++10000#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>constintMAX=1000100;charnotPrime[MAX+1];intPrimeNum;intPrimes[MAX];voidcheckPrim......
  • poj-3286
    //stupidmethod!!!!!!!!!!!!!!!//388K360MSG++#include<stdio.h>#include<string.h>#include<math.h>intC[33][33];//C[n][m],choosemfromn;voidgetCombination(){for(intn=0;n<=32;n++){for(intm=......
  • poj-2282
    //380K 32MS G++#include<stdio.h>#include<string.h>#include<math.h>longlongappearTime1[10];longlongappearTime2[10];voidgetAppearTime(intnum,longlong*appearArray){ appearArray[0]=1; if(num==0){ return; }......
  • poj-2249
    //356K16MSG++//356K0MSG++addm==0check//356K16MSG++//356K0MSG++addm==0check#include<stdio.h>#include<string.h>#include<math.h>intm;intn;//voidgetNum(unsignedintn,unsignedintm){//......
  • poj-1037
    //196K16MSC++#include<cstdio>#include<cstring>usingnamespacestd;constintMAX=25;longlongDP[MAX][MAX][2];//0:down.1:upvoidinit(){for(intcurPlankNum=1;curPlankNum<=20;curPlankNum++){for(......
  • poj-2140
    //132K 110MS C++#include<cstring>#include<cstdio>usingnamespacestd;intN;longlongcnt;voidsolve(intN){ intbegin=1; intend=1; longlongsum=1; while(1){ if(begin>N){ break; } //if(begin==......
  • poj-1988
    //564K 282MS C++#include<cstdio>#include<cstring>#include<iostream>usingnamespacestd;structUF_Node{ intup; intcount; intparent;};typedefstructUF_NodeUF_Node;UF_NodeUF_Array[30001];voidcreat(){ intc; for(......