C++ 洛谷刷题 菜鸟
今日刷题也不算很难,但是对于循环结构的理解有很大帮助,我开始想的循环结构总是不那么完美,上程序一跑,就会发现中间的变量需要重新赋值,这次的题目使用二维数组比较多,多重循环操作,也不算很难,总之多debug几次,你也可以,废话不说,上我的代码
P6321 [COCI2006-2007#4] SKENER
#include<iostream>
#include<string.h>
const int N = 252;
const int n = 52;
using namespace std;
int main()
{
int r,c,zr,zc;
cin>>r>>c>>zr>>zc;
int i,j,k,h;
//k,h表示的为杂志中的字符二维数组的横纵坐标,i,j为放大镜的横纵坐标
char res[N][N];
//定义了放大镜的横纵坐标
int a = zr;
int b = zc;
char str[n][n];
for(int i = 0;i<r;i++ )
{
for(int j = 0;j<c;j++)
cin>>str[i][j];
}
j = i = k = h = 0;
while(a<=(zr*r)&&k<r)
{
while(i<a)
{
while(b <= (c*zc))
{
while(j<b)
{
res[i][j] = str[k][h];
j++;
}
b = b+zc;
h++;
}
i++;
h = j = 0;
b = zc;
}
k++;
a = a+zr;
}
for(int i = 0;i<(r*zr);i++)
{
for(int j = 0;j<(c*zc);j++)
{
cout<<res[i][j];
}
cout<<endl;
}
}
本题已通过