| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 742 人关注过本帖, 1 人收藏
标题:有一道题,求思路
只看楼主 加入收藏
_peak
Rank: 5Rank: 5
来 自:90后
等 级:禁止访问
帖 子:83
专家分:347
注 册:2012-12-12
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:15 
有一道题,求思路
图片附件: 游客没有浏览图片的权限,请 登录注册

这道题是一个方框里面放一个数字,1到9,不能重复,只求思路即可,不需要代码,谢谢
2012-12-13 18:14
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
哎,想了半小时,除了循环遍历没想到好办法,所以。。。。。。。。。。放弃

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-13 18:47
_peak
Rank: 5Rank: 5
来 自:90后
等 级:禁止访问
帖 子:83
专家分:347
注 册:2012-12-12
收藏
得分:0 
你要是有方法也交流交流,我感觉,要判断这个数组是否已经使用过,使用过要排除掉,这步我就不知道怎么实现了,只要能删除一个数组元素,这道题不难

团结,进步,务实,创新!
2012-12-13 18:57
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:0 
遍历肯定是没问题的,关键是有没更省时间的算法了~
2012-12-13 19:06
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
那就定义一个数组a[9];用1~9把他初始化,然后每实验一个数就将相应得数组元素置0;如果值为0的元素则不遍历;
然后下一圈循环再重新初始化数组,这样会不会好些?

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-13 19:22
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
呵呵  9的全排列嘛  每生成6个数就判断是否有两个的和大于等于1了

我也只能想到这样的优化  把全排列代码给你  
程序代码:
#include <stdio.h>

int array[10];

void output(int n)
{
    int i;
    n -= 1;
    for(i=0; i<n; ++i)
    {
        printf("%d ", array[i]);
    }
    printf("%d\n", array[i]);
}

int isUsed(int d, int idx)
{
    int k;
    for(k=0; k<idx; ++k)
    {
        if(d == array[k])
        {
            return 1;
        }
    }
    return 0;
}

void quan(int n, int idx)
{
    if(idx >= n)
    {
        output(n);
        return;
    }
    int d;
    for(d=1; d<=n; ++d)
    {
        if(isUsed(d, idx))
        {
            continue;
        }
        array[idx] = d;
        quan(n, idx+1);
    }
}

void quanPaiLie(int n)
{
    quan(n, 0);
}

int main()
{
    int n;
    int d;
    scanf("%d", &n);
    while(n--)
    {
        scanf("%d", &d);
        quanPaiLie(d);
    }
    return 0;
}
全排列
时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:3            测试通过:2

描述

升序输出1~n的全排列。

输入

第一行为一个整数T,表示数据的组数。以下每行表示每组测试数据为一整数n,表示全排列的元素为1至n。n为1~8

输出

升序输出1~n的全排列。每种排列一行,每行内的数字之间用一个空格隔开。

样例输入

2
2
3

样例输出

1 2
2 1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1



[ 本帖最后由 laoyang103 于 2012-12-13 19:29 编辑 ]

                                         
===========深入<----------------->浅出============
2012-12-13 19:26
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
回复 6楼 laoyang103
膜拜

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-13 19:30
_peak
Rank: 5Rank: 5
来 自:90后
等 级:禁止访问
帖 子:83
专家分:347
注 册:2012-12-12
收藏
得分:0 
回复 6楼 laoyang103
不好意思,您理解错了,每个数字只能用一次,而且必须把9个数字用完,分母两位,分子一位

团结,进步,务实,创新!
2012-12-13 19:32
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
只想到遍历,额


[fly]存在即是合理[/fly]
2012-12-13 19:36
浅水无殇
Rank: 2
等 级:论坛游民
帖 子:123
专家分:75
注 册:2012-11-23
收藏
得分:0 
好玩的题目。。。。

wula wual
2012-12-13 19:39
快速回复:有一道题,求思路
数据加载中...
 
   



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

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