zoukankan      html  css  js  c++  java
  • 【题解】洛谷 P6368 [COCI2006-2007#6] MAGIJA

    题目大意

    给出一个(r imes m)的由“#”和“.“组成的矩阵,要求将此矩阵以右边界和下边界为对称轴对称和以右下角为对对称点中心对称后得到的((2r imes 2m))新矩阵。并将指定的((x,y))位置上的字符进行变换。

    分析

    看完题目:模拟大法好哇!

    但是感觉开三个for好麻烦……

    我们先对几个点的变换进行分析:
    ((1,1) o(1,4),(4,1),(4,4))((2,2) o(2,3),(3,2),(3,3))……

    由此我们可以发现:
    ((x,y) o(x,2 imes m-y+1),(2 imes n-x+1,y),(2 imes n-x+1,2 imes m-y+1))

    结论有了,标程还会远吗?

    Code

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,x,y;
    char a[201][201];
    int dx[3]={0,1,1},dy[3]={1,0,1};
    int main()
    {
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++)
    			cin>>a[i][j];
    	scanf("%d%d",&x,&y);
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++)
    			for(int k=0;k<3;k++){
    				int xx=dx[k]?(2*n-i+1):i,yy=dy[k]?(2*m-j+1):j;
    				a[xx][yy]=a[i][j];
    			}
    	if(a[x][y]=='#') a[x][y]='.';
    	else a[x][y]='#';
    	for(int i=1;i<=n*2;i++){
    		for(int j=1;j<=m*2;j++)
    			cout<<a[i][j];
    		cout<<endl;
    	}
    	return 0;
     } 
    

    完结撒fa~

  • 相关阅读:
    移动端图片按比例裁剪
    bootstrap悬停下拉菜单显示
    videojs兼容ie8
    ie浏览器不支持多行隐藏显示省略号
    rem和px
    浏览器默认返回,页面刷新
    centos src compile gcc 7.3
    docker与gosu
    centos 安装 kernel
    docker proxy
  • 原文地址:https://www.cnblogs.com/unknown-year/p/13876610.html
Copyright © 2011-2022 走看看