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

📄 form1.cs

📁 实现四叉树编码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace 基于十进制的线性四叉树编码
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            /*设计思路:
             先将行列号转换成二进制,存在数组里。
             当行列号的二进制位数不一致时,在其前补零,存在另一个数组里。
             最后交叉输出行列号的二进制编码*/
            int[] array11 = new int[20];
            int[] arrayn11 = new int[20];//行号二进制数组
            int[] array12 = new int[20];
            int[] array21 = new int[20];
            int[] arrayn21 = new int[20];//列号二进制数组
            int[] array22 = new int[20];
            int[] array3 = new int[40];//输出数组
            int[] array4 =new int [20];//补零数组
            int n11 = 0, n21 = 0,n3=0,n4=0,new11,new21;
            int Lmax;//最长二进制位数
            int a = Int16.Parse(textBox1.Text);
            int b = Int16.Parse(textBox2.Text);
            //将输入的数转换成二进制
            for (int i = 0; a > 0; i++)
            {
                arrayn11[i] = a % 2;
                a = a / 2;
                n11++;
            }
            new11 = n11;
            for (int i = 0; i < new11; i++)
            {
                array11[i] = arrayn11[--n11];

            }
            for (int i = 0; b > 0; i++)
            {
                arrayn21[i] = b % 2;
                b = b / 2;
                n21++;
            }
            new21 = n21;
            for (int i = 0; i<new21; i++)
            {
                array21[i] =arrayn21 [--n21];
               
            }
            //判断大小后交叉输出数组
                if (new11>=new21 )
                {
                    Lmax =new11 ;
                    for (int j=0;j<(new11 - new21);j++)
                    {
                        array4[j] = 0; n4++;
                    }
                    for(int j=0,i=0;j<Lmax&&i<new21;i++,j++)
                    {
                        //位数不够时补零
                       while (n4 > 0&&j<n4 )
                        {
                            
                             array22[j] = array4[j++];
                                
                        }  
                            array22[j] = array21[i];
                       
                        
                    }
                    //交叉输出数组
                    for(int i=0;n3<2*Lmax;i++,n3++)
                    {
                        array3 [n3]=array11[i];
                        array3 [++n3]=array22[i];
                        
                    }
                    for (int i = 0; i < 2*Lmax ; i++)
                    {
                        textBox3.Text += array3[i].ToString();
                    }
                    for (int i = 0; i < Lmax; i++)
                    {
                        textBox4.Text += array11[i].ToString();
                    }
                    for (int i = 0; i < Lmax; i++)
                    {
                        textBox5.Text += array22[i].ToString();
                    }
                }
            else //以下同上
                {
                    Lmax =new21;
                    for (int j = 0; j < (new21-new11); j++)
                    {
                        array4[j] = 0; n4++;
                    }
                    for (int j = 0, i = 0; j < Lmax && i< new11; i++, j++)
                    {
                        while(n4>0&&j<n4)
                        {
                           
                                array12[j] = array4[j++];
                               
                        }
                            

                            array12[j] = array11[i];
                     }
                       
                    
                    for (int i = 0; n3< 2 * Lmax; i++,n3++)
                    {
                        array3[n3] = array12[i];
                        array3[++n3] = array21[i];
                        
                    }
                    for (int i = 0; i < 2*Lmax; i++)
                    {
                        textBox3.Text += array3[i].ToString();
                    }
                    for (int i = 0; i < Lmax; i++)
                    {
                        textBox4.Text += array12[i].ToString();
                    }
                    for (int i = 0; i < Lmax; i++)
                    {
                        textBox5.Text += array21[i].ToString();
                    }

                }
        }

    }
}

⌨️ 快捷键说明

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