1 条题解

  • 0
    @ 2025-8-24 22:20:54

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar wuyonghuming
    **

    搬运于2025-08-24 22:20:53,当前版本为作者最后更新于2020-06-25 10:24:05,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这道题目直接按照题目说的模拟就行了

    k=0时

    damir
    marko
    darko
    
    damir
    marko
    darko
    
    for(int i=1;i<=r;i++)//循环每一行
    {
    	for(int j=1;j<=c;j++)//循环每一列
    	{
    		cout<<m[i][j];//输出答案
    	}
    	cout<<endl;//下一行
    }
    

    k=45时

    damir
    marko
    darko
    
      d
     m a
    d a m
     a r i
      r k r
       k o
        o
    
    for(int i=1;i<=r+c-1;i++)//输出有行加列减一行
    {
    	for(int a=1;a<=abs(r-i);a++)//列数减去输出的行数的绝对值是这行前面的空格数
    	{
    		cout<<' ';//输出空格
    	}
    	for(int a=r;a>=1;a--)//先输出行坐标大的所以从后往前
    	{
    		for(int b=c;b>=1;b--)//从后往前
    		{
    			if(a+b==i+1)//如果行加上列是输出的行数减一那么这个数就在这一行
    			{
    				cout<<m[a][b]<<' ';//输出
    			}
    		}
    	}
    	cout<<endl;//下一行
    }
    

    k=90时

    damir
    marko
    darko
    
    dmd
    aaa
    rrm
    kki
    oor
    
    for(int i=1;i<=c;i++)//先输出最前面那个数,输出的行数有和输入的列数一样多
    {
    	for(int j=r;j>=1;j--)//先输出最后那个数,输出的列数有和输入的行数一样多
    	{
    		cout<<m[j][i];//输出答案
    	}
    	cout<<endl;//下一行
    }
    

    k=135时

    damir
    marko
    darko
    
        d 
       a m 
      r a d 
     k r a 
    o k m 
     o i 
      r 
    
    for(int i=1;i<=r+c-1;i++)//输出有行加列减一行
    {
    	for(int a=1;a<=abs(c-i);a++)//列减去输出的行数的绝对值是这行前面的空格数
    	{
    		cout<<' ';//输出空格
    	}
    	for(int a=r;a>=1;a--)//因为先输出行坐标大的所以从后往前
    	{
    		for(int b=1;b<=c;b++)//从前往后
    		{
    			if(r-a+b==i)//如果符合输出要求
    			{
    				cout<<m[a][b]<<' ';//输出答案
    			}
    		}
    	}
    	cout<<endl;//下一行
    }
    

    k=180时

    damir
    marko
    darko
    
    okrad
    okram
    rimad
    
    for(int a=r;a>=1;a--)//从最后一行往前输出
    {
    	for(int b=c;b>=1;b--)//从最后一列往前输出
    	{
    		cout<<m[a][b];//输出答案
    	}
    	cout<<endl;//下一行
    }
    

    k=225时

    damir
    marko
    darko
    
      o 
     o k 
    r k r 
     i r a 
      m a d 
       a m 
        d 
    
    for(int i=1;i<=r+c-1;i++)//输出有长加宽减一行
    {
    	for(int a=1;a<=abs(r-i);a++)//长减去输出行数的绝对值是这行前面的空格数
    	{
    		cout<<' ';//输出空格
    	}
    	for(int a=1;a<=r;a++)//因为先输出行坐标小的所以从前往后
    	{
    		for(int b=1;b<=c;b++)//从前往后
    		{
    			if(r-a+c-b==i-1)//如果符合要求
    			{
    				cout<<m[a][b]<<' ';//输出答案
    			}
    		}
    	}
    	cout<<endl;//下一行
    }
    

    k=270时

    damir
    marko
    darko
    
    roo
    ikk
    mrr
    aaa
    dmd
    
    for(int a=c;a>=1;a--)//先输出最后面那个数,输出的行数有和输入的列数一样多
    {
    	for(int b=1;b<=r;b++)//先输出最前面那个数,输出的列数有和输入的行数一样多
    	{
    		cout<<m[b][a];//输出答案
    	}
    	cout<<endl;//下一行
    }
    

    k=315时

    damir
    marko
    darko
    
        r 
       i o 
      m k o 
     a r k 
    d a r 
     m a 
      d 
    
    for(int i=1;i<=r+c-1;i++)//输出有行加列减一行
    {
    	for(int a=1;a<=abs(c-i);a++)//列减去输出的行数的绝对值是这行前面的空格数
    	{
    		cout<<' ';//输出空格
    	}
    	for(int a=1;a<=r;a++)//因为先输出行坐标小的所以从后往前
    	{
    		for(int b=c;b>=1;b--)//从后往前
    		{
    			if(a+c-b==i)//如果符合要求
    			{
    				cout<<m[a][b]<<' ';//输出答案
    			}
    		}
    	}
    	cout<<endl;//下一行
    }
    

    代码:

    #include <bits/stdc++.h>//头文件
    using namespace std;
    int main()//主函数
    {
    	int r,c,k;//行列和度数
    	char m[11][11];//图形
    	cin>>r>>c;//输入行列
    	for(int i=1;i<=r;i++)//有r行输入
    	{
    		for(int j=1;j<=c;j++)//有c列输入
    		{
    			cin>>m[i][j];//输入图形
    		}
    	}
    	cin>>k;//输入度数
    	k%=360;//取余数,保证大于315的度数正确
    	if(k==0)
    	{
    		for(int i=1;i<=r;i++)
    		{
    			for(int j=1;j<=c;j++)
    			{
    				cout<<m[i][j];
    			}
    			cout<<endl;
    		}
    	}
    	if(k==45)
    	{
    		for(int i=1;i<=r+c-1;i++)
    		{
    			for(int a=1;a<=abs(r-i);a++)
    			{
    				cout<<' ';
    			}
    			for(int a=r;a>=1;a--)
    			{
    				for(int b=c;b>=1;b--)
    				{
    					if(a+b==i+1)
    					{
    						cout<<m[a][b]<<' ';
    					}
    				}
    			}
    			cout<<endl;
    		}
    	}
    	if(k==90)
    	{
    		for(int i=1;i<=c;i++)
    		{
    			for(int j=r;j>=1;j--)
    			{
    				cout<<m[j][i];
    			}
    			cout<<endl;
    		}
    	}
    	if(k==135)
    	{
    		for(int i=1;i<=r+c-1;i++)
    		{
    			for(int a=1;a<=abs(c-i);a++)
    			{
    				cout<<' ';
    			}
    			for(int a=r;a>=1;a--)
    			{
    				for(int b=1;b<=c;b++)
    				{
    					if(r-a+b==i)
    					{
    						cout<<m[a][b]<<' ';
    					}
    				}
    			}
    			cout<<endl;
    		}
    	}
    	if(k==180)
    	{
    		for(int a=r;a>=1;a--)
    		{
    			for(int b=c;b>=1;b--)
    			{
    				cout<<m[a][b];
    			}
    			cout<<endl;
    		}
    	}
    	if(k==225)
    	{
    		for(int i=1;i<=r+c-1;i++)
    		{
    			for(int a=1;a<=abs(r-i);a++)
    			{
    				cout<<' ';
    			}
    			for(int a=1;a<=r;a++)
    			{
    				for(int b=1;b<=c;b++)
    				{
    					if(r-a+c-b==i-1)
    					{
    						cout<<m[a][b]<<' ';
    					}
    				}
    			}
    			cout<<endl;
    		}
    	}
    	if(k==270)
    	{
    		for(int a=c;a>=1;a--)
    		{
    			for(int b=1;b<=r;b++)
    			{
    				cout<<m[b][a];
    			}
    			cout<<endl;
    		}
    	}
    	if(k==315)
    	{
    		for(int i=1;i<=r+c-1;i++)
    		{
    			for(int a=1;a<=abs(c-i);a++)
    			{
    				cout<<' ';
    			}
    			for(int a=1;a<=r;a++)
    			{
    				for(int b=c;b>=1;b--)
    				{
    					if(a+c-b==i)
    					{
    						cout<<m[a][b]<<' ';
    					}
    				}
    			}
    			cout<<endl;
    		}
    	}
    	return 0;//别忘了
    } 
    

    感谢:

    感谢管理审核!

    感谢大家观赏!

    • 1

    信息

    ID
    5467
    时间
    1000ms
    内存
    32MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者