Тема: Умножение
Показать сообщение отдельно
Старый 07.12.2012, 00:23   #12
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Умножение

ради интереса написал программку, которая считает минимальное количество ходов.
Перебором.
Эх, 19 можно только за шесть((
Перемножая числа, по сути, складываем степени.
Вот код на сях:
#define len 10

int bestLen=len;
void print(int ar[],int pos){
    if (
pos<bestLen){
        
bestLen=pos;
        for(
int i=0;i<=pos;i++)
            
printf("%i,",ar[i]);
        
printf("\n");
    }
}

void allVariants(int ar[],int pos,int num){
    if (
pos>=bestLen) return;
    for(
int i=pos-1;i>=0;i--)
        for(
int j=i;j<pos;j++){
            
int res=ar[i]+ar[j];
            if (
res>ar[pos-1]){
                
ar[pos]=res;
                if (
ar[pos]==num)
                    print(
ar,pos);
                if (
ar[pos]<num)
                    
allVariants(ar,pos+1,num);
            }
        }
}

int vect[len];
int main(){
    
vect[0]=1;
    for(
int i=2;i<65;i++){
        
allVariants(vect,1,i);
        
printf("num = %i,best len = %i \n",i,bestLen);
        
bestLen=len;
    }
    
getchar();
    return 
0;

__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием