| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 893 人关注过本帖
标题:2维数组,如果一列中所有元素都相同则删除,剩下的组成新数组,算法
只看楼主 加入收藏
bbslover
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
2维数组,如果一列中所有元素都相同则删除,剩下的组成新数组,算法
如:


a=[1 2 3 4
   1 3 3 5
   1 4 3 4]    要把1 3 删除, 保留   剩下的部分,希望大侠们指点一下。谢谢
                   1 3
                   1 3
搜索更多相关主题的帖子: 删除 算法 元素 
2009-11-06 14:45
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:6 
#include<stdio.h>
#define N 3
void main()
{
int i,j,m,n,t=N;
int a[N][N];
printf("\nplease input the numbers:\n");
for(i=0;i<N;i++)
     for(j=0;j<N;j++)
        scanf("%d",&a[i][j]);
for(j=0;j<t;j++)
    {
      for(i=0;i<t-1;i++)
         if(a[i][j]!=a[i+1][j])
            break;
    if(i==t-1)
        {
       for(m=0;m<t;m++)
            for(n=j;n<t;n++)
               a[m][n]=a[m][n+1];
               t--;
         }
    }
for(i=0;i<N;i++)
     for(j=0;j<t;j++)
        {
        printf("%-4d",a[i][j]);
        if(j==t-1)
        printf("\n");
        }        
}
   
2009-11-06 16:13
bbslover
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-6
收藏
得分:0 
感谢m456m654的帮助 ,我学习一下
2009-11-07 09:23
看海的小星
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2009-10-11
收藏
得分:6 
#include<stdio.h>
void main()
{
    int i,n;/*此变量用来进行循环*/
    int j[3],k=0;/*此数组用来统计到底那个列是重复的列,此变量用来进行数列元素的存取*/
    int c[][3]={1,2,3,1,3,3,1,5,1};
    for (i=0;i<=2;i++)
    {
        for (n=0;n<=2;n++)
            printf("%d",c[i][n]);   /*打印原来的数列*/
        printf("\n");
    }
    printf("\n");

    for (i=0;i<=2;i++)
    {
        
        if (c[0][i]==c[1][i]&&c[0][i]==c[2][i])/*判断一列的数字是否相等*/
            j[k++]=i;                    /*如果相等。读出是哪一列相等的*/
    }
    for (i=0;i<=2;i++)
    {
        for (k=0;k<=2;k++)
        {
        if (k==j[0]||k==j[1]||k==j[2]);/*如果遇到相等的那一列就什么也不做*/
        else
        {                     /*如果不相等就打印*/

                printf("%d",c[i][k]);
        }
        }
        printf("\n");
    }

}







我给你提供一个思路。并且我把注释都加上了,为了让你容易明白。你可以在我的基础上改进一下。但是算法基本不变。
2009-11-07 11:14
hsm8592
Rank: 2
等 级:论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
收藏
得分:6 
我是个新手 有点疑惑:
if(i==t-1)
        {
       for(m=0;m<t;m++)
            for(n=j;n<t;n++)
               a[m][n]=a[m][n+1];
               t--;
         }


 a[m][n]=a[m][n+1];会不会出现越界的情况,请各位大侠帮小弟解释下,万分感谢。
2009-11-07 11:45
bbslover
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-6
收藏
得分:0 
多谢大家的帮忙。虚心学习一下。
2009-11-08 19:43
快速回复:2维数组,如果一列中所有元素都相同则删除,剩下的组成新数组,算法
数据加载中...
 
   



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

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