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

📄 解码.txt

📁 这是(2
💻 TXT
字号:
 
/* Note:Your choice is C IDE */
/*基二算法的c语言实现*/

#define  state_num    64
#define  tblen        42




#include<stdio.h>
#include<math.h>

void  main(){
	
	/*path0 and path1 output  value*/
	
	static  unsigned  int  c0[state_num][2]={
		0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,
		1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,
		1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,
		0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,
	    };
	
	static  unsigned  int  c1[state_num][2]={
		1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,
		0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,
		0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,
		1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,
	};
	
	static  unsigned  int  sur_path[state_num][tblen];
	static  unsigned  int  last_pm[state_num],curr_pm[state_num];

	static  unsigned  int  decode[tblen];
	
	int  data_in1,data_in2;
	
	int  j,k=0,m,n,x,y,f;
	
	int  distant00,distant01,distant10,distant11,BM00,BM01,BM10,BM11;
	
	int  tb_en=0;
	

	
	int  sur_row,sur_column;
	
    unsigned	int  state[5],minstate=0,num=0,start_state=0;
	
	FILE  *fp_input,*fp_output;
	
	
	if((fp_input=fopen("C:\\data_enc.txt","r"))==NULL)
	printf("Open  input file   error!\n");
	else{
		if((fp_output=fopen("C:\\data_out.txt","w"))==NULL)
		printf("Open  output file  error!\n");
		while(!feof(fp_input)){
	
          if(!feof(fp_input)){
			
			data_in1=(int)fgetc(fp_input)-48;
			data_in2=(int)fgetc(fp_input)-48;

			}

		k=k+1;
		if(k>=tblen){
			tb_en=1;
			k=tblen;
		}
		else{
			tb_en=0;
		}
		
		
		/******Begin  add-compare-select ****/
		
		for(j=0;j<=31;j++){
			distant00=abs(data_in1-c0[2*j][0])+abs(data_in2-c0[2*j][1]);
			distant01=abs(data_in1-c0[2*j+1][0])+abs(data_in2-c0[2*j+1][1]);
			distant10=abs(data_in1-c1[2*j][0])+abs(data_in2-c1[2*j][1]);
			distant11=abs(data_in1-c1[2*j+1][0])+abs(data_in2-c1[2*j+1][1]);
			
			
			BM00=last_pm[2*j]+distant00;
			BM01=last_pm[2*j+1]+distant01;
			BM10=last_pm[2*j]+distant10;
			BM11=last_pm[2*j+1]+distant11;
			
			
			if(BM00<BM01){
				sur_path[j][k-1]=0;
				curr_pm[j]=BM00;
			}
			else{
				sur_path[j][k-1]=1;
				curr_pm[j]=BM01;
			}
			
			
			
			if(BM10<BM11){
				sur_path[j+32][k-1]=0;
				curr_pm[j+32]=BM10;
			}
			else{
				sur_path[j+32][k-1]=1;
				curr_pm[j+32]=BM11;
			}
		
		}
		 
		 
		 /******check  data  flow  ******/
		   minstate=curr_pm[0];
		 	for(m=0;m<=63;m++){
		 		if(curr_pm[m]<=minstate){
		 			minstate=curr_pm[m];
		 			num=m;
		 			start_state=m;
		 		}
		 	}


			for(f=0;f<=63;f++)
			last_pm[f]=curr_pm[f]-minstate;
		 			
		 if(tb_en==1){
		 	for(n=0;n<=5;n++){
		 		if(num>=pow(2,(5-n))){
		 			state[n]=1;
		 			num=num-pow(2,(5-n));
		 		}
				else 
				 state[n]=0;
		 	}
		 	
		 	for(x=tblen-1;x>=0;x--){
		 	
		 		for(y=0;y<=4;y++)state[y]=state[y+1];
		 		state[5]=sur_path[start_state][x];
		 		start_state=state[0]*32+state[1]*16+state[2]*8+state[3]*4+state[4]*2+state[5]*1;
		 	}
		 	
		 	fputc(state[0]+48,fp_output);

		 	
		 	
		 	for(sur_row=0;sur_row<=63;sur_row++){
		 		for(sur_column=0;sur_column<=tblen-2;sur_column++){
		 			sur_path[sur_row][sur_column]=sur_path[sur_row][sur_column+1];
		 		}
		 	}
		 }
		 }
		 
	
		 
		 fclose(fp_input);
		 
		 fclose(fp_output);
		 
		 getchar();
		 
		 }
		 
		 }
		 
		 	

⌨️ 快捷键说明

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