[codeforces 1335D] Anti-Sudoku 寻找需要更新的位置

Codeforces Round #634 (Div. 3)   比赛人数11922  慢慢的对Div. 3难度有了些感觉

[codeforces 1335C]   Two Teams Composing   统计技能种类数量+统计同一技能最大数量

总目录详见https://blog.csdn.net/mrcrack/article/details/103564004

在线测评地址https://codeforces.com/contest/1335/problem/D

ProblemLangVerdictTimeMemory
D - Anti-Sudoku GNU C++17Accepted62 ms0 KB

首先,需要更新的9个位置是固定的,如何寻找需要更新的位置

以下是需要更新的固定位置

154873(2)96
3(8)6592714
72964(1)835
86372514(9)
97(5)314628
4129(6)8357
6314579(8)2
(5)98236471
247(1)89563

如何快速寻找,可将样例中的输入数据,输出数据,同一行紧挨的放在一起,人眼就容易快速识别了,

手工算法如下

输入的第1行154873296
输出的第1行154873396  人眼快速识别出需要更新的数据2变成3
输入的第2行386592714
输出的第2行336592714  人眼快速识别出需要更新的数据8变成3
72964(1)835
729645835
86372514(9)
863725145
97(5)314628
979314628
4129(6)8357
412958357
6314579(8)2
631457992
(5)98236471
998236471
247(1)89563
247789563

注意,可以考虑需要更新的数据,在原来基础上增加1,

需要考虑特例,9增加1,变成了10,在代码中,将需要更改的9,统统变成了1

AC代码如下

#include <stdio.h>
char s[15][15];
int main(){
	int t,i,j;
	scanf("%d",&t);
	while(t--){
		for(i=1;i<=9;i++)
			scanf("%s",s[i]+1);
		s[1][7]=((s[1][7]=='9')?'1':(s[1][7]+1));
		s[2][2]=((s[2][2]=='9')?'1':(s[2][2]+1));
		s[3][6]=((s[3][6]=='9')?'1':(s[3][6]+1));
		s[4][9]=((s[4][9]=='9')?'1':(s[4][9]+1));
		s[5][3]=((s[5][3]=='9')?'1':(s[5][3]+1));
		s[6][5]=((s[6][5]=='9')?'1':(s[6][5]+1));
		s[7][8]=((s[7][8]=='9')?'1':(s[7][8]+1));
		s[8][1]=((s[8][1]=='9')?'1':(s[8][1]+1));
		s[9][4]=((s[9][4]=='9')?'1':(s[9][4]+1));
		for(i=1;i<=9;i++)printf("%s\n",s[i]+1);
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值