Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


ivank
PHP код: Выделить весь код

using System;


namespace summ
{
    class 
Class1
    
{
        static 
bool su(int[] mint[] sint iint pint lint sizeint corsize)
        {
            for(;
li++)
            {
                if(
corsize m[i] == size)
                {
                    for(
int j 0<= p++)
                    {
                        
Console.Write("{0} + "m[s[j]]);
                    }

                    
Console.WriteLine("{0} = {1};"m[i], size);

                    return 
true;
                }
                else if(
corsize m[i] < size)
                {
                    
s[1] = i;
                    if(
su(ms11lsizecorsize m[i]))
                    {
                        return 
true;
                    }
                }
            }

            return 
false;
        }

        static 
void summ(int[] mint lint size)
        {
            
int[] = new int[l];
            
su(ms0, -1lsize0);            
        }

        static 
void summ2(int[] numint nint size)
        {
            
int m n*(n+1)/2-1// сумма всех чисел, кроме первого

            
int[] way = new int[m+1];
            for (
int i 0<= m; ++i)
                
way[i] = 0;

            
way[0] = 1;

            for (
int i 0n; ++i)
                for (
int j m0; --j)
                    if (
way[j] == && >= num[i] && way[j-num[i]] != 0)
                        
way[j] = num[i];

            if (
way[m] == 0)
                
Console.WriteLine("Всё плохо");
            else
            {
                
Console.Write("Всё хорошо, путь: ");
                for (
int i m!= 0-= way[i])
                    
Console.Write("{0} "way[i]);
                
Console.WriteLine("");
            }
        }

        static 
void Main(string[] args)
        {
            
DateTime d1d2;
            
int l 500;
            
int[] = new int[l];

            for(
int j 0l++)
            {
                
m[j] = j;
            }

            
d1 DateTime.Now;                
            
summ(m,ll*(l+1)/2-1);
            
d2 DateTime.Now;
            
Console.WriteLine("eval time: {0}"d2 d1);

            
d1 DateTime.Now;                
            
summ2(m,ll*(l+1)/2-1);
            
d2 DateTime.Now;
            
Console.WriteLine("eval time: {0}"d2 d1);
        }
    }


чтож... поставим прогмаммы в равные словия по функциональности...

int l = 500;
eval time: 00:00:00.0200288
eval time: 00:00:00.5708208
int l = 700;
eval time: 00:00:00.0300432
eval time: 00:00:03.7754288

разница в времени работы не в вашу пользу...

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 14:48, 24-09-2006 | #18