⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.c

📁 S3C44B0x上面的N皇后问题程序
💻 C
字号:
#include "serial.h"#include "string.h"char queue(int a);short b[16];short c=1;int cnt=0;int _start(){	char a[128];	int i;	init_uart0(115200);	init_uart1(115200);	for(i=0;i<128;i++){		a[i]=0;	}	uart_write(0,"请输入一个数字:\r\n\0",40);	uart_read(0,a,15);	uart_write(0,a,15);	uart_write(0,"\r\n",2);	i=atoi(a);	uart_write(0,int2str(a,i),15);	uart_write(0,"\r\n",2);	c=0;	queue(i);	return 0;	}unsigned int uart_read(int fd,void *buf,unsigned int size){	unsigned int i=0;	for(i=0;i<size;i++){		if(fd==0){			if(((rUFSTAT0)&0xf)<15)				rUMCON0|=1;			else				rUMCON0&=0xfffffffe;			while(!(rUTRSTAT0 & 0x1))				;			((char *)(buf))[i]=RdURXH0();		}		else{			if(((rUFSTAT1)&0xf)<15)				rUMCON1|=1;			else				rUMCON1&=0xfffffffe;			while(!(rUTRSTAT1 & 0x1))				;			((char *)(buf))[i]=rURXH1;		}		if(((char *)(buf))[i] == '\r')		{			((char *)(buf))[i]='\0';			return i;		}	}	return i;}unsigned int uart_write(int fd,const void *buf,unsigned int size){	unsigned int i=0;	for(i=0;i<size;i++){		if(((char *)(buf))[i]=='\0')			return (i);		if(fd == 0){			while(!(rUTRSTAT0&0x2))				;			WrUTXH0(((char *)(buf))[i]);		}		else{			while(!(rUTRSTAT1&0x2))				;			rUTXH1=((char *)(buf))[i];		}	}	return i;}int atoi(const char *src){	char *p=(char *)src;	int res=0,i=0;	for(;isdigit(src[i]);i++){		res*=10;		res+=(src[i]-'0');	}	return res;}char *int2str(char *a,int b){	char c=0;	int i,j=0,t=b,k;	a[0]='0';	a[1]='\0';	for(i=1;i<10;i++){		if(!t)			break;		k=t%10;		t=t/10;		a[j++]=(char)(k+'0');	}	a[j]='\0';	j--;	for(i=0;i<j;i++,j--){		c=a[i];		a[i]=a[j];		a[j]=c;	}	return a;}void outBin(unsigned b){	int i=1,j=(0x1<<(c-1));	for(;i<=c;i++,j>>=1){		if(b&j)			uart_write(0,"1",1);		else			uart_write(0,"0",1);	}	uart_write(0,"\r\n",2);}char queue(int a){	int i;	unsigned short j,k;	unsigned short can=0;	char t[20];		if(a>14)		return 0;	if(a>c){		c=a;		cnt=0;		for(i=0;i<16;i++)			b[i]=0;	}	for(i=c;i>a;i--){		can|=b[i];		can|=(b[i]>>(i-a));		can|=(b[i]<<(i-a));	}	for(i=0;i<20;i++) t[i]=0;	//uart_write(0,int2str(t,a),12);	//uart_write(0,"\r\n",2);	//outBin(can);	if(a==1){		if(can==0xffff)			return 0;		else{			j=(0x1<<(c-1));			while(j){				if(!(j&can)){					for(i=0;i<20;i++) t[i]=0;					cnt++;					uart_write(0,"Case:",5);					uart_write(0,int2str(t,cnt),12);					uart_write(0,"\r\n",2);					b[a]=j;					for(i=c;i>=1;i--)						outBin(b[i]);				}				j=(j>>1);			}			return 1;		}	}	j=(0x1<<(c-1));	while(j){		if(!(j&can)){			b[a]=j;			queue(a-1);		}		j=(j>>1);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -