算法分析与设计作业 gcc编译通过
1.[文件] tromino.c ~ 3KB 下载(7)
/*
* =====================================================================================
*
* Filename: tromino.c
*
* Description: tromino
*
* Version: 1.0
* Created: 10/19/2014 03:33:13 AM
* Revision: none
* Compiler: gcc
*
* Author: YOUR NAME (),
* Organization:
*
* =====================================================================================
*/
#include
#include
int flag=1;
int matrix[8][8];
void tromino(int array[8][8], int c_row, int c_col, int length, int s_row, int s_col){
int l = length / 2;
if ( l == 1 ) {
if ( s_row <= c_row + l -1 && s_col > c_col + l -1 ) {//l=1 special point locates in quadant1
array[c_row][c_col] = array[c_row+1][c_col] = array[c_row + 1][c_col+1] = flag++;
}
else if ( s_row <= c_row + l -1 && s_col <= c_col + l -1 ) {//l=1 special point locates in quadant2
array[c_row][c_col + l] = array[c_row + 1][c_col] = array[c_row + 1][c_col + 1] = flag++;
}
else if ( s_row > c_row + l -1 && s_col <= c_col + l -1 ) {//l=1 special point locates in quadant3
array[c_row][c_col + l] = array[c_row][c_col] = array[c_row + 1][c_col + 1] = flag++;
}
else {//l=1 special point locates in quadant4
array[c_row][c_col + l] = array[c_row][c_col] = array[c_row + 1][c_col] = flag++;
}
}
else {
if ( s_row <= c_row + l -1 && s_col > c_col + l -1 ) {//if special point locates in quadant1
array[c_row + l - 1][c_col + l - 1] = array[c_row + l][c_col + l -1] = array[c_row + l][c_col + l] = flag++;
tromino(array, c_row, c_col+l, l, s_row, s_col);//1
tromino(array, c_row, c_col, l, c_row+l-1, c_col+l-1);//2
tromino(array, c_row+l, c_col, l, c_row+l, c_col+l-1);//3
tromino(array, c_row+l, c_col+l, l, c_row+l, c_col+l);//4
}
else if ( s_row <= c_row + l -1 && s_col <= c_col + l -1 ) {//if special point locates in quadant2
array[c_row + l - 1][c_col + l ] = array[c_row + l][c_col + l -1] = array[c_row + l][c_col + l] = flag++;
tromino(array, c_row, c_col+l, l, c_row+l-1, c_col+l);//1
tromino(array, c_row, c_col, l, s_row, s_col);//2
tromino(array, c_row+l, c_col, l, c_row+l, c_col+l-1);//3
tromino(array, c_row+l, c_col+l, l, c_row+l, c_col+l);//4
}
else if ( s_row > c_row + l -1 && s_col <= c_col + l -1 ) {//if special point locates in quadant3
array[c_row + l - 1][c_col + l] = array[c_row + l -1 ][c_col + l -1] = array[c_row + l][c_col + l] = flag++;
tromino(array, c_row, c_col+l, l, c_row+l-1, c_col+l);//1
tromino(array, c_row, c_col, l, c_row+l-1, c_col+l-1);//2
tromino(array, c_row+l, c_col, l, s_row, s_col);//3
tromino(array, c_row+l, c_col+l, l, c_row+l, c_col+l);//4
}
else {//if special point locates in quadant4
array[c_row + l - 1][c_col + l] = array[c_row + l - 1][c_col + l -1] = array[c_row + l][c_col + l -1] = flag++;
tromino(array, c_row, c_col+l, l, c_row+l-1, c_col+l);//1
tromino(array, c_row, c_col, l, c_row+l-1, c_col+l-1);//2
tromino(array, c_row+l, c_col, l, c_row+l, c_col+l-1);//3
tromino(array, c_row+l, c_col+l, l, s_row, s_col);//4
}
}
}
int main(){
int i,j;
matrix[2][2]=0;
tromino(matrix,0,0,8,2,2);
for (i=0;i<8;i++) {
for (j=0;j<8;j++) {
printf("%4d",matrix[i][j]);
}
printf("\n");
}
printf("\n");
for (i=0;i<8;i++) {
for (j=0;j<8;j++) {
printf("\33[%dm%2d\33[0m",41+matrix[i][j]%8,matrix[i][j]);
}
printf("\n");
}
return 0;
}
2.[图片] tromino.jpg