最大k乘积问题

    设I是一个n位十进制整数。如果将I分割为k段,则可得到k个整数。这k个整数的乘积称为I的一个k乘积。试设计一个算法,对于给定的I和k,求出I的最大k乘积。
    以下程序由12软工王瑞红编写,基本思路是暴力搜索。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//设I是一个n位十进制整数,如果将I分割为K段,则可得到K个整数的乘积称为I的一个K乘积。
//试设计一个算法,对于给定的I和K,求出I的最大K乘积。
namespace 最大k乘积问题
{
    class Program
    {
        static void Main(string[] args)
        {String str;
         int K;
         do{
            Console.WriteLine("请输入I的值:");
            str = Console.ReadLine();
            Console.WriteLine("请输入K的值:");
            K = int.Parse(Console.ReadLine());
           }while(str.Length= 0; j--)
            {
                int count = 0;
                int J = j;
                for (int i = (str.Length - 2); i >=0 ; i--)
                {
                    B[i] = J % 2;
              //      Console.WriteLine("B[{0}]={1}", i, B[i]);
                    J = J / 2;
                    if (B[i] == 1) { count++; }
                }
                //
                if (count == (K - 1))
                {  int q = 1;
                int L = num[0];
                int sum = 1;
                    for (int x = 0; x <= B.Length-1; x++)
                    {
                      
                        if (B[x] == 0)
                        { L = L * 10 +num[q]; q++;}
                        else { sum = sum * L; L = num[q]; q++; }
                        
                    }
                    sum = sum * L;
               //     Console.WriteLine("sum={0}", sum);
                    if (SUM < sum) SUM = sum;
                }
            }
            Console.WriteLine("最大为:{0}",SUM);
        }
    }
}







你可能感兴趣的:(算法设计,蓝桥杯,C语言,ACM)