[ create a new paste ] login | about

Link: http://codepad.org/F1qWvnwF    [ raw code | output | fork ]

C, pasted on Sep 30:
int masu[9][9]={
{0,0,3,0,0,0,0,0,0},
{0,9,0,0,0,0,2,0,0},
{4,0,0,5,7,8,0,1,0},
{0,8,2,9,0,0,4,0,3},
{0,0,5,0,0,0,0,0,7},
{0,0,1,0,0,0,0,0,8},
{8,0,0,6,2,5,0,9,0},
{0,0,0,4,0,0,0,0,0},
{0,6,0,0,0,0,8,0,0}};

int check(int i,int x,int y);
int ume(int x,int y);

int main(){
	int x,y,i,fin;
	for(y=0;y<9;y++)
		for(x=0;x<9;x++)
			scanf("%d",&masu[y][x]);
	fin=ume(0,0);
	for(y=0;y<9;y++){
		printf("\n");
		for(x=0;x<9;x++)
			printf("%d ",masu[y][x]);
	}
}

int ume(int x,int y){
	int i=1,fin=0,pass;
	if(x==0&&y==9)
		return 1;
	else if(masu[y][x]){
		if(x<8)
			fin=ume(x+1,y);
		else if(x==8)
			fin=ume(0,y+1);
		return fin;
	}
	while(!fin && i<=9){
		pass=check(i,x,y);
		if(!pass){
			masu[y][x]=i;
			if(x<8)
				fin=ume(x+1,y);
			else if(x==8)
				fin=ume(0,y+1);
		}
		i++;
	}
	if(!fin)
		masu[y][x]=0;
	return fin;
}

int check(int i,int x,int y){
	int m,n;
	for(m=0;m<9;m++){
		if(masu[m][x]==i)
			return 1;
		if(masu[y][m]==i)
			return 1;
	}
	if(y>=0&&y<3){
		if(x>=0&&x<3)
			for(m=0;m<3;m++)
				for(n=0;n<3;n++)
					if(masu[m][n]==i)
						return 1;
		if(x>=3&&x<6)
			for(m=0;m<3;m++)
				for(n=3;n<6;n++)
					if(masu[m][n]==i)
						return 1;
		if(x>=6&&x<9)
			for(m=0;m<3;m++)
				for(n=6;n<9;n++)
					if(masu[m][n]==i)
						return 1;
	}
	if(y>=3&&y<6){
		if(x>=0&&x<3)
			for(m=3;m<6;m++)
				for(n=0;n<3;n++)
					if(masu[m][n]==i)
						return 1;
		if(x>=3&&x<6)
			for(m=3;m<6;m++)
				for(n=3;n<6;n++)
					if(masu[m][n]==i)
						return 1;
		if(x>=6&&x<9)
			for(m=3;m<6;m++)
				for(n=6;n<9;n++)
					if(masu[m][n]==i)
						return 1;
	}
	if(y>=6&&y<9){
		if(x>=0&&x<3)
			for(m=6;m<9;m++)
				for(n=0;n<3;n++)
					if(masu[m][n]==i)
						return 1;
		if(x>=3&&x<6)
			for(m=6;m<9;m++)
				for(n=3;n<6;n++)
					if(masu[m][n]==i)
						return 1;
		if(x>=6&&x<9)
			for(m=6;m<9;m++)
				for(n=6;n<9;n++)
					if(masu[m][n]==i)
						return 1;
	}
	return 0;
}


Output:
1
2
3
4
5
6
7
8
9
10
11

7 5 3 1 9 2 6 8 4 
1 9 8 3 4 6 2 7 5 
4 2 6 5 7 8 3 1 9 
6 8 2 9 1 7 4 5 3 
9 4 5 8 6 3 1 2 7 
3 7 1 2 5 4 9 6 8 
8 3 4 6 2 5 7 9 1 
2 1 7 4 8 9 5 3 6 
5 6 9 7 3 1 8 4 2 
Exited: ExitFailure 2


Create a new paste based on this one


Comments: