UVa 10267 - Graphical Editor

題目:編輯圖像的二維數組,存在題目中的跟中操作(存在非法操作,直接跳過不處理);

分析:圖論、搜索。直接模擬處理即可,這裡用floodfill處理K操作,注意dfs可能會暴棧。

說明:注意坐標可能不是升序的,所以要先交換。

#include <stdio.h>
#include <stdlib.h>

char bmp[256][256];
char name[1000];

void floodfill(int n, int m, int y, int x, char s, char t)
{
	if (y < 1 || y > n || x < 1 || x > m || bmp[y][x] != s) {
		return;
	}
	bmp[y][x] = t;
	floodfill(n, m, y, x+1, s, t);
	floodfill(n, m, y, x-1, s, t);
	floodfill(n, m, y+1, x, s, t);
	floodfill(n, m, y-1, x, s, t);
}

void swap(int &a, int &b)
{
	int c = a;
	a = b;
	b = c;
}

int main()
{
	char buf[100], color[100];
	int  row = 0, column = 0, X, Y, X1, Y1, X2, Y2;
	while (scanf("%s", &buf) && buf[0] != 'X') {
		if (buf[0] == 'I' || buf[0] == 'C') {
			if (buf[0] == 'I') {
				scanf("%d%d", &column, &row);
			}
			for (int i = 1; i <= row; ++ i) {
				for (int j = 1; j <= column; ++ j) {
					bmp[i][j] = 'O';
				}
			}
		}else if (buf[0] == 'L') {
			scanf("%d%d%s", &X, &Y, color);
			bmp[Y][X] = color[0];
		}else if (buf[0] == 'V') {
			scanf("%d%d%d%s", &X, &Y1, &Y2, color);
			if (Y1 > Y2) {
				swap(Y1, Y2);
			}
			for (int i = Y1; i <= Y2; ++ i) {
				bmp[i][X] = color[0];
			}
		}else if (buf[0] == 'H') {
			scanf("%d%d%d%s", &X1, &X2, &Y, color);
			if (X1 > X2) {
				swap(X1, X2);
			}
			for (int i = X1; i <= X2; ++ i) {
				bmp[Y][i] = color[0];
			}
		}else if (buf[0] == 'K') {
			scanf("%d%d%d%d%s", &X1, &Y1, &X2, &Y2, color);
			if (Y1 > Y2) {
				swap(Y1, Y2);
			}
			if (X1 > X2) {
				swap(X1, X2);
			}
			for (int i = Y1; i <= Y2; ++ i) {
				for (int j = X1; j <= X2; ++ j) {
					bmp[i][j] = color[0];
				}
			}
		}else if (buf[0] == 'F') {
			scanf("%d%d%s", &X, &Y, color);
			if (bmp[Y][X] != color[0]) {
				floodfill(row, column, Y, X, bmp[Y][X], color[0]);
			}
		}else if (buf[0] == 'S') {
			scanf("%s", name);
			puts(name);
			for (int i = 1; i <= row; ++ i) {
				for (int j = 1; j <= column; ++ j) {
					printf("%c",bmp[i][j]);
				}
				puts("");
			}
		}
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值