バグ

anarchy golf - Decompose integer into sum of squaressample output が間違っている件ですが、こんなプログラムで sample output を再現できました。

#include<stdio.h>

int numbers[301], indice[301], length[301], sum[301];

void show(int index){
    if(index>0){
        show(indice[index]);
        printf(" %d", numbers[index]);
    }
}

int main()
{
    int n;

    for(n=1; n<=300; n++){
        int number, min_length=9, min_sum=300;

        for(number=1; number*number<=n; number++){
            int remain=n-number*number;

            if((min_length>length[remain]) ||
                    (min_length==length[remain] && min_sum>sum[remain])){
                numbers[n]=number;

                min_length=length[remain];
                length[n]=min_length+1;

                indice[n]=remain;

                sum[remain]=min_sum+number;
            }
        }
        printf("%d:", n);
        show(n);
        puts("");
    }
    return 0;
}