2015年4月14日 星期二

TIOJ 1020 . F.Number Insertion

這竟然只是暴搜OAO

#include <cstdio>
#include <cstdlib>

int ans[100] = {0};

int dfs(int* arr, int k, int klim, int len){
    if(k > klim){
        bool bigger = false;
        for(int lx = 0;lx < len;lx++){
            if(arr[lx] == ans[lx]) continue;
            if(arr[lx] > ans[lx]) bigger = true;
            if(arr[lx] < ans[lx]) bigger = false;
            break;
        }
        if(bigger){
            for(int lx = 0;lx < len;lx++)
                ans[lx] = arr[lx];
        }
        return 1;
    }
    int cnt = 0;
    for(int lx = 0;lx+1 < len;lx++){
        if(k%(arr[lx] + arr[lx+1]) == 0){
            for(int ly = len;ly >= lx+2;ly--)
                arr[ly] = arr[ly-1];
            arr[lx+1] = k;
            cnt += dfs(arr, k+1, klim, len+1);
            for(int ly = lx+1;ly < len;ly++)
                arr[ly] = arr[ly+1];
        }
    }
    return cnt;
}

int main(){
    int k; scanf("%d", &k);
    int arr[100] = {0, 1};
    int cc = dfs(arr, 2, k, 2);
    printf("%d\n", cc);
    for(int lx = 0;lx <= k;lx++)
        printf("%d ", ans[lx]);
    puts("");
    return 0;

}

沒有留言:

張貼留言