| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1776 人关注过本帖
标题:我知道答案 {t=x[k]; x[k]=x[i]; x[i]=t;} 但不太理解 谁给解释一下
只看楼主 加入收藏
C语言小虾米
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-3-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
我知道答案 {t=x[k]; x[k]=x[i]; x[i]=t;} 但不太理解 谁给解释一下
九数组分数

1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?

下面的程序实现了该功能,请填写划线部分缺失的代码。

#include <stdio.h>

void test(int x[])
{
    int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
    int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
   
    if(a*3==b) printf("%d / %d\n", a, b);
}

void f(int x[], int k)
{
    int i,t;
    if(k>=9){
        test(x);
        return;
    }
   
    for(i=k; i<9; i++){
        {t=x[k]; x[k]=x[i]; x[i]=t;}
        f(x,k+1);
        _____________________________________________ // 填空处
    }
}
   
int main()
{
    int x[] = {1,2,3,4,5,6,7,8,9};
    f(x,0);   
    return 0;
}
2016-03-06 14:46
ccccmeiyi
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2016-3-3
收藏
得分:7 
这是把x[k]的值和x[i]进行交换;先把X[k]的值赋给t,就像此时x[k]已经空出了了;然后把x[i]的值在赋给x[k];x[i]=t就是把把x[k]的值赋给i。

我很菜,但我不放弃。
2016-03-06 16:06
C语言小虾米
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-3-3
收藏
得分:0 
回复 2楼 ccccmeiyi
我是想知道为什么划线处填这个答案
2016-03-07 15:21
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:7 
http://blog. 。这个递归我想不太明白,大意是枚举所有的9个数不同的排列组合,一一尝试。

   唯实惟新 至诚致志
2016-03-07 15:53
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
收藏
得分:7 
这个是9个数的全排列。虽然排列组合总放在一起讲,但排列是排列,组合是组合,如abc全排列有abc、acb、bac、bca、cab、cba共6种,而组合则只有abc一种了,双色球的红球就是32组6的组合。
楼主这个递归算法是通用的全排列算法,从最简单的排列看,2个数据ab的全排列是ab、ba,我们可以发现它们就是相互交换位置的规律,这个递归的目的就是两个相邻的数交换位置,随着递归深度加深,最终简单到只有两个数交换,楼主可以先用3个数单步调试下这个递归就明白了。
2016-03-07 23:55
快速回复:我知道答案 {t=x[k]; x[k]=x[i]; x[i]=t;} 但不太理解 谁给解释一下
数据加载中...
 
   



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

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