C# - 字符串映射的数字 - 艰难的逻辑

时间:2009-08-27 04:36:59

标签: c# .net

我的TL要求我实施这个:

如果我们将英文字母编号为

a   1
b   2
c   3
d   4
e   5
f   6
g   7
h   8
i   9
j   1
k   2
l   3
m   4
n   5
o   6
p   7
q   8
r   9
s   1
t   2
u   3
v   4
w   5
x   6
y   7
z   8

元音将是

a   1
e   5
i   9
o   6
u   3

用户将输入:

  1. 元音数量
  2. 萨姆
  3. 字符数
  4. 现在我需要显示一个长度字符串:用户输入的字符数 字符串有两个部分:
    第一部分将具有用户输入的总和的元音 第二部分的长度为[用户输入的字符数 - 按照上面一半字符串的元音],总和将与用户输入的相同。

    任何机构都可以为此编写C#代码。我努力尝试但无法弄明白。

    非常感谢任何帮助。

    到目前为止,这是我的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace VowelsAndConsonants
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Gather Info from the User
                Console.WriteLine("Please Enter Number of Vowels");
                string numVowels = Console.ReadLine();
                Console.WriteLine("Please Enter the Total");
                string total = Console.ReadLine();
                Console.WriteLine("Please Enter the Number of Chars");
                string numChars = Console.ReadLine();
                //Convert the Strings entered by User to int
                int inNumVowels = Convert.ToInt16(numVowels);
                int intTotal = Convert.ToInt16(total);
                int intNumChars = Convert.ToInt16(numChars);
                //Populate the Array with all the alphanets
                string[,] arr = new string[,] { { "a", "1" }, { "b", "2" }, { "c", "3" }, { "d", "4" }, { "e", "5" }, { "f", "6" }, { "g", "7" }, { "h", "8" }, { "i", "9" }, { "j", "1" }, { "k", "2" }, { "l", "3" }, { "m", "4" }, { "n", "5" }, { "o", "6" }, { "p", "7" }, { "q", "8" }, { "r", "9" }, { "s", "1" }, { "t", "2" }, { "u", "3" }, { "v", "4" }, { "w", "5" }, { "x", "6" }, { "y", "7" }, { "z", "8" } };
                string[] resArr= new string[20];// = null;
                for (int i = 0; i < intNumChars; i++)
                {
                    //The logic you guys would suggest goes here
                    resArr[0]=arr[,];
                    //Display the string
                    Console.WriteLine("");
                }
            }
        }
    }
    

2 个答案:

答案 0 :(得分:6)

困难的部分不是编写代码。困难的部分是弄清楚解决这个问题的算法是什么。一旦你的算法成为可靠的,将其转换为代码就会很简单。

您对算法有何看法?从一些人为的例子开始。例如,假设您获得1/9/2。解决方案是IR。作为一个人,你会如何提出这个解决方案?你能描述一种方法,让你,一个人,总能得出答案吗?

答案 1 :(得分:0)

我认为你在使用mod时走错了路。

在我看来,这是对“贪婪算法”问题的一种变化,与在家庭作业问题中使用硬币进行有效变更相关,但我认为这似乎是它的一种变体。

维基百科有一个page on it,我相信谷歌搜索贪心算法会帮助你。