⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 battle.c

📁 PASCAL光盘资料PASCAL光盘资料PASCAL光盘资料
💻 C
字号:
/*  CTU Open Contest 2002  =====================  Sample solution for the problem: battle  Jan Cada, Oct 2002*/#include <stdlib.h>#include <stdio.h>#include <string.h>enum { SEA=0, NEWSHIP, ENDSHIP, ISSHIP };int main(){ while(1)    {      int R, C, r, c, II;      char *lastrow, *row;      II=0;      scanf( "%d%d\n", &R, &C);      if(R==0) break;      lastrow = (char*) malloc(C+10);      row     = (char*) malloc(C+10);      memset( lastrow, '.', C);      for( r=0; r<R; ++r) 	{          char *tmp;          int laststate = SEA;          int actualstate;	  gets(row); 	  /* /          printf("%s\n%s\n", lastrow, row); */          if(II == -1) continue;	  for( c=0; c<C; ++c)	    {	      actualstate = (lastrow[c]=='#'?2:0) + (row[c]=='#'?1:0);	      /* //	      printf("[%d,%d]<%d,%d,%d>{%d,%d}\n", r, c, laststate, actualstate, II, lastrow[c], row[c] ); */	      if(actualstate && laststate && (actualstate!=laststate))		{ II = -1; break; }	      else if((actualstate == NEWSHIP)&&(laststate == SEA))                II++; 	      laststate = actualstate;	    }          tmp = lastrow; lastrow = row; row = tmp; /* // swap buffers */	}      free(row);      free(lastrow);      if( II == -1)        printf("Bad placement.\n");      else        printf("There are %d ships.\n",II);    }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -