top of page

소스 코드 제출

공개·회원 50명

250530

/*

#include <stdio.h>

int arr[300][300]={}, count[100]={};

int sum=0, n, m;

void dfs(int k, int p)

{

if(k<0||p<0||k>=n||p>=m||arr[k][p]==1)

{

return;

}

count[sum]++;

arr[k][p]=1;

dfs(k+1, p);

dfs(k-1, p);

dfs(k, p+1);

dfs(k, p-1);

}

int main()

{

int e, k, a1, b1, c2, d2, i, j, temp;

scanf("%d %d %d", &n, &m, &e);

for(i=0;i<e;i++)

{

scanf("%d %d %d %d", &a1, &b1, &c2, &d2);

for(j=b1;j<d2;j++)

{

for(k=a1;k<c2;k++)

{

arr[j][k]=1;

}

}

}

for(i=0;i<n;i++)

{

for(j=0;j<m;j++)

{

if(arr[i][j]==0)

{

dfs(i, j);

sum++;

}

}

}

printf("%d\n", sum);

for(i=0;i<sum;i++)

{

for(j=0;j<sum;j++)

{

if(count[j]>count[j+1])

{

temp=count[j+1];

count[j+1]=count[j];

count[j]=temp;

}

}

}

for(i=1;i<=sum;i++)

{

printf("%d ", count[i]);

}

return 0;

}

*/

/*

#include<stdio.h>

int arr[200][200]={}, arr2[200][200]={};

int n, h, sum=0, som=0;

void dfs(int k, int p)

{

// printf("d(%d %d)\n", k, p);

if(k<0||p<0||k>=n||p>=h||arr[k][p]==1)

{

return;

}

arr[k][p]=1;

dfs(k+1, p);

dfs(k-1, p);

dfs(k, p+1);

dfs(k, p-1);

}

void dfs2(int k, int p)

{

if(k<0||p<0||k>=n||p>=h||arr2[k][p]==0)

{

return;

}

arr2[k][p]=0;

dfs2(k+1, p);

dfs2(k-1, p);

dfs2(k, p+1);

dfs2(k, p-1);

}

int main()

{

int i, j;

scanf("%d %d", &n, &h);

for(i=0;i<n;i++)

{

for(j=0;j<h;j++)

{

scanf("%d", &arr[i][j]);

arr2[i][j]=arr[i][j];

}

}

for(i=0;i<n;i++)

{

for(j=0;j<h;j++)

{

if(arr[i][j]==0)

{

dfs(i, j);

sum++;

}

else if(arr2[i][j]==1)

{

dfs2(i, j);

som++;

}

}

}

printf("%d %d", sum, som);

return 0;

}

*/


#include<stdio.h>

int arr[100][100]={}, count[400]={}, coont[400]={};

int n, sum=0, som=0;

void dfs1(int k, int p, int way)

{

count[sum]++;

arr[k][p]=0;

if(k+1<=19&&arr[k+1][p]==1&&way==1)

{

dfs1(k+1, p, way);

}

if(p+1<=19&&arr[k][p+1]==1&&way==2)

{

dfs1(k, p+1, way);

}

if(k+1<=19&&p+1<=19&&arr[k+1][p+1]==1&&way==3)

{

dfs1(k+1, p+1, way);

}

if(k-1>=1&&p+1<=19&&arr[k-1][p+1]==1&&way==5)

{

dfs1(k-1, p+1, way);

}

}


void dfs2(int k, int p, int way)

{

arr[k][p]=0;

coont[som]++;

if(k+1<=19&&arr[k+1][p]==2&&way==1)

{

dfs2(k+1, p, way);

}

if(p+1<=19&&arr[k][p+1]==2&&way==2)

{

dfs2(k, p+1, way);

}

if(k+1<=19&&p+1<=19&&arr[k+1][p+1]==2&&way==3)

{

dfs2(k+1, p+1, way);

}

if(k-1>=1&&p+1<=19&&arr[k-1][p+1]==2&&way==5)

{

dfs2(k-1, p+1, way);

}

}


int main()

{

int i, j, way, a=0;

for(i=1;i<=19;i++)

{

for(j=1;j<=19;j++)

{

scanf("%d", &arr[i][j]);

}

}

for(i=1;i<=19;i++)

{

for(j=1;j<=19;j++)

{

if(arr[i][j]==1)

{

if(arr[i+1][j]==1)

{

way=1;

}

else if(arr[i][j+1]==1)

{

way=2;

}

else if(arr[i+1][j+1]==1)

{

way=3;

}

else if(arr[i-1][j+1]==1)

{

way=4;

}

dfs1(i, j, way);

printf("%d %d\n", i, j);

if(count[sum]==5)

{

printf("1\n");

printf("%d %d", i, j);

a+=1;

}

sum++;

}

if(arr[i][j]==2)

{

if(arr[i+1][j]==2)

{

way=1;

}

else if(arr[i][j+1]==2)

{

way=2;

}

else if(arr[i+1][j+1]==2)

{

way=3;

}

else if(arr[i-1][j+1]==2)

{

way=4;

}

dfs2(i, j, way);

printf("*%d %d\n", i, j);

if(coont[som]==5)

{

printf("2\n");

printf("%d %d", i, j);

a+=1;

}

som++;

}

}

}

if(a==0)

{

printf("0");

}

return 0;

}

4회 조회
주소 : 경기도 용인시 광교중앙로 302 블루 스퀘어 602호
연락처 : 031) 216 - 1546 ,     031) 215 - 1546
사업자등록번호 : 465-92-00916
​학원 등록 제 4603호
bottom of page