I need the c code for this please. Skyler is really good at math. The thing he i
ID: 3681571 • Letter: I
Question
I need the c code for this please.
Skyler is really good at math. The thing he is best at is finding X. But he doesn’t like algebra at all (it’s just too boring); so, instead he likes to find Xs on the page!
In middle school he was satisfied with just finding the letter ‘X’; however, after he advanced to high school he is now interested in finding larger Xs. He noticed that large Xs (consisting of two intersecting diagonals, each with consecutive Xs) can occur in various designs. Some large Xs intersect between characters while others intersect precisely on a single character. Within the latter group, some intersect exactly on the center X; call these large Xs perfect. For example, Page A below has a perfect X of size 5 because the two diagonals (each containing 5 Xs) intersect through a single character and it is the center X in both diagonals. Page B has an X (of size 4) that intersects between characters so it is not a valid perfect X; however, a single X is always considered perfect so Page B has multiple perfect Xs of size 1. Page C has an X that intersects through a single character but is only a perfect X of size 3 (the larger X does not intersect through the center X of both diagonals). Note that Xs on the end of a diagonal (or even on other parts of the page) may be ignored in the interest of forming a larger perfect X.
Page A Page B Page C
XOOOX XOOX XOOOX
OXOXO OXXO OXXXO
OOXOO OXXO OXXXO
OXOXO XOOX OXXXO
XOOOX XOOOO
Valid Perfect X of Size 5 Multiple Perfect Xs of Size 1 Valid Perfect X of Size 3
Skyler would like to be able to find the largest such perfect X on a page. He would like you to write a program that can help him! The largest perfect X is the perfect X with the largest size.
The Problem:
Given lines from a page of paper, find the largest perfect X on the page.
The Input:
The first line of input will be a single positive integer, n, representing the number of pages to read. Each page will begin with two postive integers, l and w (l < 50; w < 50), representing the number of lines on this page and the length of each line, respectively. Each of the next l lines of input will each contain exactly w characters. Each character will be an uppercase letter, and it is guaranteed that the letter ‘X’ will appear at least once on each page.
The Output:
For each page, first output “Page #i: ” where i is the number of the page (beginning with 1), followed by a single integer representing the size of the largest perfect X on the page.
Sample Input:
3
3 3
UPU
CXC
FTF
5 5
XABCX
DXEXF
GHXIJ
KXLXM
XNOPX
3 6
AXEAXE
SIXXES
OXYOXY
Sample Output:
Page #1: 1
Page #2: 5
Page #3: 1
4 cm Here itiExplanation / Answer
find.c
#include <stdio.h>
int main() {
//open the input file
FILE* in = fopen("find.in", "r");
//read in number of test cases
int T;
fscanf(in, "%d", &T);
//loop over the cases
int t;
for(t = 1; t <= T; t++) {
//read in number of rows and columns
int R, C;
fscanf(in, "%d", &R);
fscanf(in, "%d", &C);
//read in grid
char grid[R][C];
int i, j;
for(i = 0; i < R; i++)
fscanf(in, "%s", &grid[i]);
//max stores the answer
int max = 0;
//loop over all center points for x
for(i = 0; i < R; i++) {
for(j = 0; j < C; j++) {
//if this isn't an x don't consider it
if(grid[i][j] != 'X')
continue;
//try extending diagonally this center point until
//you are off the grid or not an x
int k = 0;
for(;;) {
//check if we went off grid
if(i+k >= R || i-k < 0 || j+k >= C || j-k < 0)
break;
//check if it's not an X
if(grid[i+k][j+k] != 'X' || grid[i-k][j+k] != 'X' ||
grid[i+k][j-k] != 'X' ||grid[i-k][j-k] != 'X')
break;
k++;
}
//decrement because we over shot it in our check
k--;
//see if this new max is better than the previous one
if (k*2+1 > max)
max = k*2+1;
}
}
//output answer for this case
printf("Page #%d: %d ", t, max);
}
//close file and exit
fclose(in);
return 0;
}
find.in
37
3 3
OOO
OXO
OOO
5 5
XABCX
DXEXF
GHXIJ
KXLXM
XNOPX
3 6
AXEAXE
SIXXES
OXYOXY
1 1
X
2 2
AX
AA
2 2
BA
XB
2 2
XA
AA
2 2
AA
AX
2 2
XA
AX
2 2
AX
XA
2 2
XX
XX
3 3
AXA
XXX
AXA
3 3
XCX
CXC
XCX
3 3
XCX
CXC
DDX
3 3
EFX
GXH
XIX
3 3
XKL
MXN
XOX
3 3
XQX
QXQ
XQQ
3 3
XXX
XXX
XXX
1 3
XXX
3 1
X
X
X
2 3
XXX
XXX
3 2
XX
XX
XX
5 5
XAAXA
AXAAX
AAXAA
XAAXA
AXAAX
5 5
AXAAX
XAAXA
AAXAA
AXAAX
XAAXA
2 1
X
A
2 1
A
X
1 2
AX
1 2
XA
10 10
XAAAAAAAXA
AXAAAAAXAA
AAXAAAXAAA
AAAXAXAAAA
AAAAXAAAAA
AAAXAXAAAA
AAXAAAXAAA
AXAAAAAXAA
XAAAAAAAXA
AAAAAAAAAX
50 1
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
1 50
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
50 50
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
50 50
AAAAAAAAAAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXAAAAAAAAAA
XAAAAAAAAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXAAAAAXX
XXXXXXXAAAAAAAAAAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXAAAXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXAAAAXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXAAAAAAXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXAAAAAAAXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXAAAAAAAAAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AAAAAAAAAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXAAAAAAAA
8 8
XYXYYYYY
YXYYYYYY
XYXYYYYY
YYYXYYYY
YYYYXYYY
YYYYYXYY
YYYYYYXY
YYYYYYYX
7 7
AAAAAAA
AXAAAXA
AAAAAAA
AAAXAAA
AAAAAAA
AXAAAXA
AAAAAAA
7 7
XAXAXAX
AXAXAXA
XAXAXAX
AXAXAXA
XAXAXAX
AXAXAXA
XAXAXAX
7 7
XAXAXAX
AXAXAXA
XAXAXAX
AXABAXA
XAXAXAX
AXAXAXA
XAXAXAX
sample output
Page #1: 1
Page #2: 5
Page #3: 1
Page #4: 1
Page #5: 1
Page #6: 1
Page #7: 1
Page #8: 1
Page #9: 1
Page #10: 1
Page #11: 1
Page #12: 1
Page #13: 3
Page #14: 1
Page #15: 1
Page #16: 1
Page #17: 1
Page #18: 3
Page #19: 1
Page #20: 1
Page #21: 1
Page #22: 1
Page #23: 1
Page #24: 1
Page #25: 1
Page #26: 1
Page #27: 1
Page #28: 1
Page #29: 9
Page #30: 1
Page #31: 1
Page #32: 49
Page #33: 47
Page #34: 3
Page #35: 1
Page #36: 7
Page #37: 3