请教:这程序是如何运行的,能详细说明一下吗。
#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编辑过]