Pagini recente » Cod sursa (job #1604127) | Cod sursa (job #1169198) | Cod sursa (job #699107) | Cod sursa (job #1960630) | Cod sursa (job #439695)
Cod sursa(job #439695)
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fi=fopen("figuri2.in","r");
FILE *fo=fopen("figuri2.out","w");
int N,i,j,k=0,dmaxp=0,dmaxr=0,d=0,ok,*countp,*countr;
char **b;
fscanf(fi,"%d",&N);
b=(char**)malloc(N*sizeof(char*));
countp=(int*)calloc(N,sizeof(int));
countr=(int*)calloc(N,sizeof(int));
for (i=0;i<N;i++) {
b[i]=(char*)malloc(N*sizeof(char));
fscanf(fi,"%s",b[i]);
}
for (i=0;i<N;i++)
for (j=0;j<N;j++)
if (b[i][j]=='1') {
//patrat
d=0;
do {
ok=1;
d++;
if (i+d>=N || j+d>=N) break;
for (k=0;k<=d;k++)
if (b[i+d][j+k]!='1' || b[i+k][j+d]!='1') {
ok=0;
break;
}
}
while (ok);
if (d>dmaxp) {
dmaxp=d;
countp[d]++;
}
else if (d==dmaxp) {
countp[d]++;
}
//romb
d=0;
do {
ok=1;
d++;
if (i+d>=N || i-d<0 || j+d>=N || j-d<0) break;
for (k=0;k<=d;k++)
if (b[i+k][j+d-k]!='1' || b[i+k][j-d+k]!='1' || b[i-k][j+d-k]!='1' || b[i-k][j-d+k]!='1') {
ok=0;
break;
}
}
while (ok);
if (d>dmaxr) {
dmaxr=d;
countr[d]++;
}
else if (d==dmaxr) {
countr[d]++;
}
}
fprintf(fo,"%d %d\n%d %d",dmaxp,countp[dmaxp],dmaxr,countr[dmaxr]);
fclose(fi);
fclose(fo);
return 0;
}