题意:

给出两个n*n的矩阵,一个作为初始矩阵。一个作为目标矩阵,给出m个操作,操作有两种,一种是“L,x,y”。代表我们要把x这一行赋成y,还有一种是“H,x,y”,代表要把x这一列赋成y。问我们怎样安排这些操作才干把初始矩阵转化成目标矩阵。输出方案。special judge

思路:

首先明白一点,初始矩阵是没实用的~,依照题解的说法。我们能够按顺序枚举全部操作,假设是L操作,我们就在目标矩阵中找一行都是y的。把这一行都更成0,同一时候把答案更新,如此往复,直至我们得到一种方案。

附上题解代码(绍兴一中的):

#include <stdio.h>
#include <stdlib.h>
using namespace std; int T,n,m,t,i,j,k,l;
int a[105][105],b[505],c[505],ans[505];
char opt[505],ch; int main()
{
scanf("%d",&T);
for(;T;--T)
{
scanf("%d%d",&n,&m);t=0;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
scanf("%d",&a[i][j]);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
scanf("%d",&a[i][j]);
for(i=1;i<=m;++i)
{
for(ch=getchar();ch!='H'&&ch!='L';ch=getchar());
opt[i]=ch;scanf("%d%d",&b[i],&c[i]);
}
for(;t<m;)
{
for(i=1;i<=m;++i)
if(b[i])
{
k=b[i];
if(opt[i]=='L')
{
for(j=1;j<=n;++j)
if(a[j][k]&&a[j][k]!=c[i])
break;
if(j>n)
{
ans[++t]=i;b[i]=0;
for(j=1;j<=n;++j)a[j][k]=0;
}
}
else
{
for(j=1;j<=n;++j)
if(a[k][j]&&a[k][j]!=c[i])
break;
if(j>n)
{
ans[++t]=i;b[i]=0;
for(j=1;j<=n;++j)a[k][j]=0;
}
}
}
}
for(i=m;i>=1;--i)printf("%d ",ans[i]);
printf("\n");
}
}

最新文章

  1. Android性能优化之App应用启动分析与优化
  2. WINDOWS登录系统之前(欢迎界面)运行指定程序脚本服务
  3. input 正则限制输入内容
  4. Hibernate学习笔记(二)
  5. c# foreach循环二维数组
  6. 一款符合当前主流审美的Swing外观(Look and Feel)_测试版发布
  7. JS匿名函数自执行函数
  8. MySQL主从读写分离专题
  9. 修改Oracle 10g Express Edition默认的8080端口
  10. 转:精心挑选的12款优秀 jQuery Ajax 分页插件和教程
  11. mouseover和this的巧用
  12. Redis数据类型之List(三)
  13. 可以用 Python 编程语言做哪些神奇好玩的事情?
  14. 多线程(5)async&amp;await
  15. Google代码规范
  16. iOS 数组问题
  17. 全网最详细的最新稳定OSSEC搭建部署(ossec-server(CentOS7.X)和ossec-agent(CentOS7.X))(图文详解)
  18. 如何在Mac上搭建自己的服务器——Nginx
  19. spring cloud 下载依赖慢解决方案
  20. 1.SpringMVC入门

热门文章

  1. IPFS
  2. UVA 1619/POJ2796 滑窗算法/维护一个单调栈
  3. sqlmap post注入两种方式
  4. 【CF1068C】Colored Rooks(构造)
  5. .bat 处理错误码
  6. hdu 4970 树状数组 “改段求段”
  7. LeetCode OJ--Palindrome Number
  8. springBoot AOP切面编程
  9. (4)ASP.NET内置对象1
  10. Java IO设计模式