算法---简单题(3)

java书上第二章的最后实验题,一个是求:数字转换为中文金额。另一个是:约瑟夫环问题。

第一个写了两天,还是没有完美的解决,主要的问题在于他的几个要求0的表示,10的表示和整的表示。解决一个可以,但是要一起解决,感觉代码就越写越乱了。然后参考了答案,发现答案的解答也不尽如人意,想一想反正简单就做简单的搞吧。很快就写完了。

《算法---简单题(3)》
《算法---简单题(3)》
Code

using System;

public class ChineseMoney
{
     
public static string moneyToString(double x)
     {
           
string yuan = 亿千百拾万千百拾元角分
           
string digit = 零壹贰叁肆伍陆柒捌玖;
           
string result =“”;
           
int y = (int)Math.Floor(x);
           
int i=yuan.Length1;
           
while(y>0 && i>0)
           {
                result 
= “”+digit[y%10]+yuan[i]+result;
                i
;
                y
=y/10;
           }
           
return result;
     }

     public static void Main()
     {
          
double x = 1234456;
          Console.Write(moneyToString(x));
     }

}

 

约瑟夫是做过很多次的问题了,沿用以前的写法:

《算法---简单题(3)》
《算法---简单题(3)》
Code

using System;

public class Josephus_Array
{
     
public static void output(int[] table)
     {
          
for(int i=0;i<table.Length;i++)
             Console.Write(table[i]
+ );
          Console.WriteLine();
     }

     public static void josephus(int number,int start,int 

distance)
     {
           int[] ring = new int[number];
           
for (int m=0;m<number;m++)               //初始化
                ring[m] = m+1;
          
//Console.Write(“ring: “);
          
// output(ring);
           int i=start1;
           
int k=number;
           
while(k>1)
           {
              
int j=0;
              
while(j<distance)
              {
              i
=(i+1)%number;
              
if(ring[i]!=0)
              j
++;
              }
              ring[i]
=0;
              k
;
              output(ring);
           }      
     }

     public static void Main()
     {
         josephus(
5,0,2);
     }
}

 

    原文作者:冰の酷龙
    原文地址: https://www.cnblogs.com/kulong995/articles/1445696.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞