标题:请教:这程序是如何运行的,能详细说明一下吗。
取消只看楼主
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
结帖率:66.67%
已结贴  问题点数:20 回复次数:2 
请教:这程序是如何运行的,能详细说明一下吗。
#include <stdio.h>
int ans , n , m , K;
char s[20];
int Max(int a,int b){
    return a > b ? a : b;
}
int Min(int a,int b){
    return a < b ? a : b;
}

void dfs(int c,int gt,int num1,int num2){
    if(c == n){
        ans = Max(ans , Max(num1,num2) - Min(num1,num2));
        return ;
    }
    if(gt != m)
dfs(c + 1 , gt + 1, num1 * K + s[c] - '0' , num2);
    if(c - gt != n - m)
        dfs(c + 1 , gt , num1 , num2 * K + s[c] - '0');
}

int main(){
    scanf("%d%d%d%s",&n,&m,&K,s);
    ans = -1;
    dfs(0 , 0 , 0 , 0);
    printf("%d\n",ans);
    return 0;
}
输入: 5 3 10 13254



[此贴子已经被作者于2017-6-28 10:40编辑过]

搜索更多相关主题的帖子: 运行 int Max return Min 
2017-06-28 10:24
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
得分:0 
dfs(0,0,0,0)带到自定义函数后,后面第一个IF语句都满足变成dfs(1,1,1,0),第二个IF语句也满足:dfs(1,0,0,1),继续带到dfs函数后,
dfs(1,1,1,0)第一个IF语句不满足,第二个IF语句后,变成dfs(2,2,13,0)经过第三个IF语句后为,dfs(2,1,1,3)
,,,,要怎么计算出最后ans值比较简单啊。求解,谢谢了
红色那段代码的详细运行情况:搞不懂。

[此贴子已经被作者于2017-6-28 10:42编辑过]

2017-06-28 10:34
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
得分:0 
回复 4楼 renkejun1942
如何,要你来做这题,你会怎么做,就阅读这段程序,得出答案。不要借助软件。
2017-06-29 10:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479002-1-1.html




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

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