zoukankan      html  css  js  c++  java
  • 2019.6.24-2019.6.28(实训数据结构)3.数组编码求解问题

    2019.6.24-2019.6.28(实训数据结构) 书籍:《数据结构项目实训教程》 赵君喆,戴文华

    5.5数组与广义表项目实训拓展

    设有一个数组 A:array[0..N-1],存放的元素为0~N-1(1<N<=10)之间的整数,且A[i]!=A[j],i!=j。

    例如:当N=6时,有A=(4,3,0,5,1,2)。此时,数组A的编码定义如下:

    A[0]编码:0。

    A[i]编码wei:在A[0],A[1],...,A[i-1]中比A[i]的值小的个数(i=1,2,...N-1)。

    则数组A的编码为B=(0,0,0,3,1,2)。

    要求如下:

    给出数组A,利用C求解A的编码。

    给出数组A的编码后,求出A中的原数据。

    #include<iostream>
    #include<cstdio>
    #include<conio.h>
    #include<stdlib.h>
    #include<time.h>
    using namespace std;
    
    int a[12],b[12];
    
    void swap(int * x,int * y){
        int temp;
        temp = *x;
        *x = *y;
        *y = temp;
    }
    void fun(int N){
        srand(time(NULL));
        int i;
        for(i=0; i<N; ++i)
            a[i]=i;
        for(i=N-1; i>=1; --i) 
            swap(&a[i], &a[rand()%i]);
        printf("产生的随机数组是:
    ");
        for(i=0; i<N; ++i)
            printf("%d ",a[i]);
        cout<<endl;
    }
    
    int main(){
        int n,m;
        printf("请输入n:
    ");
        cin>>n;
        fun(n);
        for(int i=0;i<n;i++){
            int count=0;
            for(int j=0;j<i;j++){
                if(a[j]<a[i]){
                    count++;
                }
            }
            b[i]=count;
        }
        printf("数组的编码分别是:
    ");
        for(int i=0;i<n;i++){
            cout<<b[i]<<" ";
        }
        
        //解码 
        int d[n],f[n];
        int flag=0;
        //printf("
    请输入数组的编码:
    ");
        /*for(int i=0;i<n;i++){
            cin>>m;
            c[i]=m;
        }*/
        for(int i=0;i<n;i++){
            d[i]=i;
        }
        for(int i=n-1;i>=0;i--){
            int count=0;
            for(int j=0;j<n;j++){
                if(d[j]==-1){
                    count--;
                }    
                else if(b[i]==count){
                    f[flag]=d[j];
                    flag++;
                    d[j]=-1;
                    break;
                }
                count++;
            }
        }
        printf("
    请数组编码解码为:
    ");
        for(int i=flag-1;i>=0;i--){
            cout<<f[i]<<" ";
        }
        return 0;
    } 
  • 相关阅读:
    基于 Token 的身份验证
    学以致用二---配置Centos7.2 基本环境
    学以致用一 安装centos7.2虚拟机
    #!/usr/bin/env python与#!/usr/bin/python的区别
    centos7.2下安装python3.6.2
    Day1-python基础-变量常量
    Day1-python基础
    学python之路前的一些话
    Mybatis generator自动生成mybatis配置和类信息
    MyBatis Generator generatorConfig.xml配置详解
  • 原文地址:https://www.cnblogs.com/zhying99/p/11083822.html
Copyright © 2011-2022 走看看