| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 861 人关注过本帖
标题:请教一个简单的算法,谢谢。
只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
收藏
已结贴  问题点数:100 回复次数:12 
请教一个简单的算法,谢谢。
有个3*5的数组A1,如下:
4,10,11
1,10,11
1,4,11
1,4,10
1,2,11

存在一个1*5的数组B1(值域是1-11,重复的不算的,比如1,2,3,4,5和2,3,1,4,5是一样的。)与A1有如下关系:
在B1中的元素有1或2个在A1(i,j)中出现过。
求出B1有什么元素?
比如:B1的元素是1,5,6,7,10,那么就乎合上面的关系,2,3,6,9,11也乎合上面的关系。


A.4,10,11
B.1,10,11
C.1,4,11
D.1,4,10
E.1,2,11

我是这样推理的。
如果是A出现的是(4,11),B出现的是(1,11),那么C不成立,因为A并B={1,4,11},那么就推出(4,11)和(1,11)不会同时出现。
我想要的就是类似这种的推理结果吧。

[ 本帖最后由 ioriliao 于 2011-8-5 10:20 编辑 ]
搜索更多相关主题的帖子: 元素 
2011-08-04 19:45
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:17 
2,4,6,9,11 不是有3个在A1(i,j)中出现过吗? 2 4 11

My life is brilliant
2011-08-04 19:54
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
回复 2楼 lz1091914999
对了,这个搞错了,马上修改。

/images/2011/147787/2011051411021524.jpg" border="0" />
2011-08-04 20:01
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
没人??????

/images/2011/147787/2011051411021524.jpg" border="0" />
2011-08-04 22:30
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:17 
这不就是从 1, 2, 4, 10, 11 中取一个或两个然后再生成三个 1 ~ 11 且不属于前面那个集合的数字就行了么?

[ 本帖最后由 voidx 于 2011-8-4 22:50 编辑 ]
2011-08-04 22:49
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:17 
不知道楼主要干什么
我的想法是把a1中不重复的数放到一个新数组中,从新数组中随机选两个数放入b1中,再随机生成三个数,楼主想要干什么呢?
2011-08-05 06:31
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
回复 5楼 voidx
不要想得太简单。

/images/2011/147787/2011051411021524.jpg" border="0" />
2011-08-05 09:30
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
回复 6楼 hjywyj
仔细看题目。

/images/2011/147787/2011051411021524.jpg" border="0" />
2011-08-05 09:31
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:17 
我接分来的
2011-08-05 09:41
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:17 


#include <stdio.h>
int exsit[12] = {0} ;
int vis[12] = {0} ;
int res[12] = {0} ;
int count = 0 ;
int legal( int n , int x )
{
    int i ;
    for( i = 0 ; i < n ; ++i )
    {
        if( res[i] > x )
            return 0 ;
    }
    return 1 ;
}
void Run( int cur )
{
    int i ;
    if( cur == 5 )
    {
        if( count != 0 )
        {
            printf("%d is the same: ", count ) ;
            for( i = 0 ; i < 5 ; ++i )
                printf("%d ", res[i] ) ;
            printf("\n") ;
        }
        return ;
    }
    for( i = 1 ; i < 12 ; ++i )
    {
        if( !vis[i] && ( !exsit[i] || count < 2 ) && legal( cur , i) )
        {
            if( exsit[i] )
                count++ ;
            res[cur] = i ;
            vis[i] = 1 ;
            Run( cur + 1 ) ;
            vis[i] = 0 ;
            if( exsit[i] )
                count-- ;
        }
    }
}
int main()
{
    freopen( "in.txt" , "r" , stdin ) ;
    int i , j ;
    int a[3][5] ;
   
    for( i = 0 ; i < 3 ; ++i )
    {
        for( j = 0 ; j < 5 ; ++j )
        {
            scanf("%d", &a[i][j] ) ;
            exsit[a[i][j]] = 1 ;
        }
    }
    for( i = 0 ; i < 12 ; ++i )
    {
        if( exsit[i] )
            printf("%d ", i ) ;
    }
    printf("\n") ;

    Run(0) ;
    return 0 ;
}
2011-08-05 09:42
快速回复:请教一个简单的算法,谢谢。
数据加载中...
 
   



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

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