日期:2014-05-17  浏览次数:20926 次

求1个算法
有这样一个字符串
输入:A000Z-B360Z

输出 
A000Z
A001Z
……
A360Z
B001Z
B002Z
……
B360Z

------解决方案--------------------
for (int i = (int)s1[0]; i <= (int)s2[0]; i++)
    for (int j = int.Parse(s1.SubString(1, 3); j <= int.Parse(s2.SubString(1, 3); j++)
        Console.WriteLine(((char)i).ToString() + j.ToString().PadLenft(3, '0') + "Z");
------解决方案--------------------
应该是变进制数的枚举。


using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //A000Z
            //A001Z
            //……
            //A360Z
            //B001Z
            //B002Z
            //……
            //B360Z
            var rad = new List<string[]>(3); //就把它当一个三位数,个位是1进制,十位360+1进制,百位2+1进制
            rad.Add(new[]
                    {
                        "A", "B"
                    });

            rad.Add(Enumerable.Range(0, 361).Select(i => i.ToString("000")).ToArray());
            rad.Add(new[]
                    {
                        "Z"
                    });

            foreach (var item in new VarNumberEnum(rad.ToArray()).Enum())
            {
                Console.Write(item + "\t");
            }

            //00A00-36B00
            rad.Clear();
           &n