为什么只过了三个点?
查看原帖
为什么只过了三个点?
159852
EmissaryD楼主2022/3/11 19:44
#include <stdio.h>
#include <math.h>
#define MAXN 100
#define Inf 0x3f3f3f3f

int sum, ans = Inf;
int n;
int s[MAXN], b[MAXN];
int a[2]={1, 0};
void dfs(int step){
    if(step == n + 1){
        if(ans > sum){
            ans = sum;
        }
        return ;
    }
    int i = step;
    a[0] *= s[i];
    a[1] += b[i];
    sum = abs(a[0] - a[1]);
    dfs(step + 1);
    a[0] /= s[i];
    a[1] -= b[i];
    sum = abs(a[0] - a[1]);
    dfs(step + 1);
}



int main(){
    scanf("%d", &n);
    for(int i = 1;i <= n;i++){
        scanf("%d%d", s + i, b + i);
    }
    dfs(1);
    printf("%d", ans);


    return 0;
}
2022/3/11 19:44
加载中...