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

📄 1006_ac.cpp

📁 我的URAL的1000 ~ 1050 的全部代码 包含WA 最后AC的程序 有2~3个比较难的是MAIGO的程序
💻 CPP
字号:
#include<stdio.h> #include<stdlib.h>#define        width        50#define        height        20#define        maxk        2000typedef        unsigned char xchar;const        xcharlu        =218,ru        =191,lb        =192,rb        =217,ve        =179,ho        =196,any        ='?';struct        SquareList{        int        y,x,l;}        list[maxk];xchar        a[height][width];int        i,j,k,l,finish,empty;inline        int ok(int y,int x,int l){        if (a[y][x]!=lu&&a[y][x]!=any) return        0;        if (a[y][x+l]!=ru&&a[y][x+l]!=any) return 0;        if (a[y+l][x]!=lb&&a[y+l][x]!=any) return 0;        if (a[y+l][x+l]!=rb&&a[y+l][x+l]!=any) return 0;        empty=a[y][x]!=lu&&a[y][x+l]!=ru&&a[y+l][x]!=lb&&a[y+l][x+l]!=rb;        return        1;}int        check(int y,int x,int l){        int        i;        for (i=x+1;i<x+l;i++)        {                if (a[y][i]!=ho&&a[y][i]!=any) return 0;                if (a[y][i]==ho) empty=0;                if (a[y+l][i]!=ho&&a[y+l][i]!=any) return 0;                if (a[y+l][i]==ho) empty=0;        }        for (i=y+1;i<y+l;i++)        {                if (a[i][x]!=ve&&a[i][x]!=any) return 0;                if (a[i][x]==ve) empty=0;                if (a[i][x+l]!=ve&&a[i][x+l]!=any) return 0;                if (a[i][x+l]==ve) empty=0;        }        if (empty) return 0;        for (i=x;i<=x+l;i++)                a[y][i]=a[y+l][i]=any;        for (i=y+1;i<y+l;i++)                a[i][x]=a[i][x+l]=any;        return        1;}int main(){   for (i=0;i<height;i++)        {      for (j=0;j<width;j++)         scanf("%c",&a[i][j]);      scanf("\n");        }   while (!finish)        {      finish=1;      for (l=1;l<height;l++)	      for (i=0;i<height-l;i++)  			  	for (j=0;j<width-l;j++)			      if (ok(i,j,l))			    		if (check(i,j,l))			                	{			            list[k].y=i;			            list[k].x=j;			            list[k++].l=l+1;			      	   finish=0;			              		 }        }   printf("%d\n",k);   while (k--)      printf("%d %d %d\n",list[k].x,list[k].y,list[k].l);   return 0;}

⌨️ 快捷键说明

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