| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1489 人关注过本帖
标题:编码问题?帮忙看看::鄙人较愚望高人指点呐!!!
只看楼主 加入收藏
20072815
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-1
收藏
 问题点数:0 回复次数:5 
编码问题?帮忙看看::鄙人较愚望高人指点呐!!!
设有一个整形数组 A[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]编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数 (i=1,2,…,N-1)
    例如上面数组 A的编码为:B=(0,0,0,3,1,2)
若给出数组A,则可求出其编码。同理,若给出数组A的编码,可求出A中的原数据。

输入:
    推导方向(取值为1或2,如为1,则表示根据数组求数组编码;如为2,则表示根据编码反求数组)
    数组个数
    数组或数组编码元素
输出:
    数组编码、或数组本身(元素之间以空格分隔)
例子1输入  1                                    输出              例子2输入2                              输出
                       6                                                                                          6
                       4 3 0 5 1 2                             0 0 0 3 1 2                          0 0 0 3 1 2                       4 3 0 5 1 2

main
{int m,n,i,j,count=0,c[20],a[20];   int static b[20]={0};
   scanf("%d\n%d",&m,&n);
       for(i=0;i<n;i++)
        scanf("%d",a[i]);
          for(i=0;i<n;i++)
               b[i]=i;
if(m==1)
  {
        for(i=0;i<2*n-1;i+=2)
          for(j=i+2;j<2*n-1;j+=2)
            {if(a[i]>a[j])
               b[i]++;}
              for(i=0;i<2*n-1;i++)
                 printf("%d",b[i]);
   }
if(m==2)
   {
        b[a[n-1]]=10; c[n-1]=a[n-1];
             for(i=n-2;i=n-2;i--)
              {  for(j=0;j<n;j++)
                   if(b[j]>=0&&b[j]<=9)
                       {  count++;
                          if(count==a[n-2])
                          {c[n-2]=b[j]; b[j]=10;}
                          else  continue;
                        }
                    n=n-1;
                }
     }
     for(i=0;i<n;i++)    printf("%d",c[i]);
}
搜索更多相关主题的帖子: 鄙人 高人 编码 
2007-12-14 18:46
VanGogh
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-27
收藏
得分:0 
算法很烂 N个For
#include "stdio.h"
main()
{int m,n,i,j,k,l,count=0,c[20],a[20];
 int static b[20]={0};
 clrscr();
   scanf("%d %d",&m,&n);
       for(i=0;i<n;i++)
    scanf("%d",&a[i]);

if(m==1)
  {
        for(i=1;i<n;i++)
          for(j=0;j<i;j++)
            {if(a[i]>a[j])
               b[i]++;}
              for(i=0;i<n;i++)
                 printf("%d",b[i]);
   }
if(m==2)
   {
    for(i=0;i<n;i++)
    b[i]=i;
    for(i=n-1;i>=0;i--)
      for(j=i;j>=0;j--)
       {for(k=j-1,count=0;k>=0;k--)
      if(b[j]>b[k]) count++;
      if(count==a[i])
      {
      c[i]=b[j];
      for(l=j;l<i;l++)
      b[l]=b[l+1];
      }
       }
     for(i=0;i<n;i++)    printf("%d ",c[i]);
     }
      getch();
}

[[italic] 本帖最后由 VanGogh 于 2007-12-15 15:20 编辑 [/italic]]
2007-12-14 20:51
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
路过。。。。。。。。。。。。

樱花大战,  有爱.
2007-12-14 20:56
VanGogh
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-27
收藏
得分:0 
吃完饭写了第二个的 试试吧 在一楼
2007-12-15 15:21
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
用一个简易的线段树或者树状数组可以把算法复杂度降至O(nlogn)
2007-12-15 17:53
2665
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-12-19
收藏
得分:0 
求教一个C语言的问题!拜托!!!
你是一名室内装潢工程队的配料员。你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:

1
 2
 6
 7
 15
 
3
 5
 8
 14
 16
 
4
 9
 13
 17
 22
 
10
 12
 18
 21
 23
 
11
 19
 20
 24
 25
 


学了 C 语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。

输入:
    方阵N的大小。

输出
    方阵。
2007-12-19 21:08
快速回复:编码问题?帮忙看看::鄙人较愚望高人指点呐!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021894 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved