분형의 미
무엇 을 알 수 있겠는가
며칠 전에 좀 싸게 푸제이 2083 문제를 냈어요.단지 처음의 방법은 매우 어리석다!하위 그림을string으로 저장한 다음 다음 등급의 그림을 구성합니다.3*3의 하위 그림을 큰 그림으로 맞추면 나는 한 줄 한 줄 쓸어 들어왔다. 그래서 다음과 같다.
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <algorithm>
#include <cmath>
using namespace std;
#define N 7
char str[N][800*800] = {"X\0"};
char ans[N][800][800];
int a[N] = {1}, f[N] = {1};
string tmp, blank;
string gao(string as, string bs, string cs, int d){
string r = "";
for(int i = 0;i < d;i++){
for(int j = 0;j < d;j++)
r += as[i*d+j];
for(int j = 0;j < d;j++)
r += bs[i*d+j];
for(int j = 0;j < d;j++)
r += cs[i*d+j];
}
return r;
}
int main()
{
for(int i = 1;i < N;i++)
a[i] = a[i-1] * 3;
for(int i = 0;i < N;i++)
f[i] = a[i] * a[i];
for(int i = 1;i < N;i++){
blank = tmp = "";
for(int j = 0;j < f[i-1];j++){
tmp += str[i-1][j];
blank += ' ';
}
tmp = gao(tmp, blank, tmp, a[i-1]) + gao(blank, tmp, blank, a[i-1]) + gao(tmp, blank, tmp, a[i-1]);
for(int j = 0;j < f[i];j++)
str[i][j] = tmp[j];
}
int n;
while(~scanf("%d", &n)){
if(n == -1) break;
n--;
for(int i = 0;i < f[n];i++){
if(i && i % a[n] == 0) printf("
");
putchar(str[n][i]);
}
printf("
-
");
}
return 0;
}
분형이 갑자기 나타나다
추하게 느껴졌어요. 그리고discuss를 봤는데 의외로 또 다른 문제인 POJ3678을 발견했어요. 이번에는 추하게 줄을 눌러서 스캔하면 안 돼요!분형을 말하자면 몇 개의 예쁜 그림이 기억났다.가장 간단한 하위 그림을 모형으로 만들면 큰 그림의 전체 형상은 모형의 확대판이다.서브맵을 채우고 들어갈 때 배치된 위치와 확대된 비율을 표시하면 큰 그림으로 작성할 수 있다.약간의 귀착의 뜻이 있어서 이렇게 짧다...
/*-------------------------------------------- * File Name: POJ 3678 * Author: Danliwoo * Mail: [email protected] * Created Time: 2016-05-23 12:25:53 --------------------------------------------*/
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <algorithm>
#include <cmath>
using namespace std;
#define N 7
char mp[N][3010][3010];
int a[N] = {1}, f[N] = {1};
void pt(int x, int y, int d){
for(int i = 0;i < a[d];i++)
for(int j = 0;j < a[d];j++)
mp[d+1][x+i][y+j] = mp[d][i][j];
}
void dfs(int n){
if(n == 0) return;
dfs(n-1);
for(int i = 0;i < a[0];i++)
for(int j = 0;j < a[0];j++)
if(mp[0][i][j] != ' ')
pt(i*a[n-1], j*a[n-1], n-1);
}
void pr(int n){
for(int i = 0;i < a[n];i++){
for(int j = 0;j < a[n];j++)
putchar(mp[n][i][j]);
printf("
");
}
}
int main(){
int n, m;
while(scanf("%d", &n), n){
getchar();
for(int i = 0;i < n;i++)
gets(mp[0][i]);
a[0] = strlen(mp[0][0]);
f[0] = a[0] * a[0];
scanf("%d", &m);
for(int i = 1;i < m;i++){
a[i] = a[i-1] * a[0];
f[i] = a[i] * a[i];
}
for(int k = 1;k < m;k++)
for(int i = 0;i < a[k];i++){
for(int j = 0;j < a[k];j++)
mp[k][i][j] = ' ';
}
dfs(m-1);
pr(m-1);
}
return 0;
}
남을 업신여기다.
어리석게 생각해 보니 일찍이 만났던 귀속해야 할 문제 ZOJ 3839, 이게 분형인 줄 알았어, 오, no!틀림없이 내가 눈이 멀었을 것이다. 분형의 생각에 따라 만들어진 큰 그림은 몇 개의 직사각형 블록이지 긴 선이 아니다.이거 수동으로 선을 그어야 돼!코드략, 혼자 놀자:)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 백엔드에서 데이터를 트리로 변환하고 맵은 json 트리를 생성하여 백엔드로 되돌려줍니다. (백엔드 변환)java 백엔드, 데이터를 트리로 변환하고,map는 json 트리를 생성하여 전방으로 되돌려줍니다(백엔드 변환) 1. 왜 이런 블로그를 쓰나요? 2.java 백엔드 코드 3. 전환된 데이터는 다음과 유사한 형식으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.