zoukankan      html  css  js  c++  java
  • zoj 2312

    //昨天练习感觉很不错,把大二他们虐了。不是赢在时间上,而是赢在题量上。
    //这道题我组是第一个解出来的,因此还让我们上台讲解题目。
    //刚拿到这道题时根本没想,直接得出结论,这是一道很简单的模拟题。
    //AC完之后听他们说这道题目很长,当时根本没想到。
    //下面开始贴代码
    
    #include<stdio.h>
    #include<string.h>
    
    #define MAXSIZE 80
    char map[MAXSIZE][MAXSIZE];
    int sizex,sizey;
    
    void setpoint(int x,int y,char c){
    	if(map[y][x]==' ')map[y][x]=c;
    	else if(map[y][x]==c)return;
    	else if((map[y][x]=='-'||map[y][x]=='+'||map[y][x]=='|')&&
    		(c=='-'||c=='+'||c=='|'))map[y][x]='+';
    	else if((map[y][x]=='/'||map[y][x]=='x'||map[y][x]=='\\')&&
    		(c=='/'||c=='\\'||c=='x'))map[y][x]='x';
    	else map[y][x]='*';
    }
    void line(void){
    	int x1,x2,y1,y2,i;
    	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    	if(x1==x2){
    		if(y1>y2){
    			i=y1;
    			y1=y2;
    			y2=i;
    		}
    		for(i=y1;i<=y2;++i)setpoint(x1,i,'|');
    	}else if(y1==y2){
    		if(x1>x2){
    			i=x1;
    			x1=x2;
    			x2=i;
    		}
    		for(i=x1;i<=x2;++i)setpoint(i,y1,'-');
    	}else if(x2-x1==y2-y1){
    		if(x1>x2){
    			i=x1;
    			x1=x2;
    			x2=i;
    		}
    		if(y1>y2){
    			i=y1;
    			y1=y2;
    			y2=i;
    		}
    		while(x1<=x2){
    			setpoint(x1,y1,'\\');
    			++x1;++y1;
    		}
    	}else if(x2-x1+y2-y1==0){
    		if(x1>x2){
    			i=x1;
    			x1=x2;
    			x2=i;
    		}
    		if(y1>y2){
    			i=y1;
    			y1=y2;
    			y2=i;
    		}
    		while(x1<=x2){
    			setpoint(x1,y2,'/');
    			++x1;--y2;
    		}
    	}
    }
    void point(void){
    	int x,y;
    	scanf("%d%d",&x,&y);
    	setpoint(x,y,'o');
    }
    void text(void){
    	int x,y,i;
    	char str[1023];
    	scanf("%d%d%s",&x,&y,str);
    	for(i=0;str[i]&&i+x<=sizex;++i)setpoint(i+x,y,str[i]);
    }
    void clear(void){
    	int x1,x2,y1,y2,i,j;
    	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    	if(x1>x2){
    		i=x1;
    		x1=x2;
    		x2=i;
    	}
    	if(y1>y2){
    		i=y1;
    		y1=y2;
    		y2=i;
    	}
    	for(i=y1;i<=y2;++i)for(j=x1;j<=x2;++j)map[i][j]=' ';
    }
    void print(void){
    	int i,j;
    	printf("+");
    	for(i=1;i<=sizex;++i)printf("-");
    	printf("+\n");
    	for(i=1;i<=sizey;++i){
    		printf("|");
    		for(j=1;j<=sizex;++j)putchar(map[i][j]);
    		printf("|\n");
    	}
    	printf("+");
    	for(i=1;i<=sizex;++i)printf("-");
    	printf("+\n");
    }
    int main(){
    	char str[255];
    	int i,j,cas=0;
    	//freopen("C:/Users/lenovo/Desktop/stdin.txt","r",stdin);
    	//freopen("C:/Users/lenovo/Desktop/stdout.txt","w",stdout);
    	while(2==scanf("%d%d",&sizex,&sizey) && sizex>0 && sizey>0){
    		for(i=1;i<=sizey;++i)for(j=1;j<=sizex;++j)
    			map[i][j]=' ';
    		while(1){
    			scanf("%s",str);
    			if(strcmp(str,"LINE")==0)line();
    			else if(strcmp(str,"POINT")==0)point();
    			else if(strcmp(str,"TEXT")==0)text();
    			else if(strcmp(str,"CLEAR")==0)clear();
    			else if(strcmp(str,"PRINT")==0){
    				print();
    				break;
    			}
    		}
    		printf("\n");
    	}
    	return 0;
    }
    
    
    
  • 相关阅读:
    伪类样式
    div 文字超出边框后,省略号显示
    关于常用的 meta
    js数组去重
    异步二进制文件下载
    JJWT现前后端分离身份验证
    ApachePOI快速入门
    axios兼容ie7
    vue解决跨域问题
    log4j模板
  • 原文地址:https://www.cnblogs.com/zhanhb/p/2005713.html
Copyright © 2011-2022 走看看