zoukankan      html  css  js  c++  java
  • go解决分金币问题

    一、题目

    你有100枚金币,需要分配给以下几个人:Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,Adriano,Aaron,Elizabeth。
    分配规则如下:
    1.    名字中包含a或A,分配1枚金币
    2. 名字中包含e或E,分配1枚金币
    3. 名字中包含i或I,分配2枚金币
    4. 名字中包含o或O,分配3枚金币
    5. 名字中包含u或U,分配5枚金币
    写一个程序,计算每个用户分到多少金币,以及最后剩余多少金币?

    二、代码展示:
    package main
    
    import "fmt"
    
    var (
    	//金币总数
    	coins = 100
    	//名字
    	users = []string{
    		"Matthew", "Sarah", "Augustus", "Heidi", "Emilie",
    		"Peter", "Giana", "Adriano", "Aaron", "Elizabeth",
    	}
    // 存放分配结果的map distribution = make(map[string]int, len(users)) ) /* l  有100枚金币,需要分配给以下用户,分配规则如下: n  名字中包含a或A,分配1枚金币 n  名字中包含e或E,分配1枚金币 n  名字中包含i或I,分配2枚金币 n  名字中包含o或O,分配3枚金币 n  名字中包含u或U,分配5枚金币 l  输出如下: */ func GetEveryConis(username string) int { var num=0 for _,char:= range username { switch char { case 'a','A': num+=1 case 'e','E': num+=1 case 'i','I': num+=2 case 'o','O': num+=3 case 'u','U': num+=5 default: } } return num } //获取所有已分配的金币总数 func GetSumCoins() int { var sum=0 for _,username:= range users { var myCoins=GetEveryConis(username) sum+=myCoins value,ok := distribution[username] if !ok { distribution[username]=myCoins }else { distribution[username]=myCoins+value } } return sum } func main() { sum:=GetSumCoins() for k,v:= range distribution{ fmt.Printf("姓名:%s分到%d枚金币 ",k,v) } fmt.Println("当前还剩余金币数:",coins-sum) }

     最后输出结果如下: 

    姓名:Giana分到4枚金币
    姓名:Aaron分到5枚金币
    姓名:Heidi分到5枚金币
    姓名:Emilie分到6枚金币
    姓名:Augustus分到16枚金币
    姓名:Peter分到2枚金币
    姓名:Adriano分到7枚金币
    姓名:Elizabeth分到5枚金币
    姓名:Matthew分到2枚金币
    姓名:Sarah分到2枚金币
    当前还剩余金币数: 46

    说明:由于golang中map是无序的,所以每次go run 出来的结果可能不一样。如果想要排序输出请使用slice切片实现。

    
    
  • 相关阅读:
    ios实例开发精品源码文章推荐
    Citrix 服务器虚拟化之二十七 XenApp6.5发布服务器桌面
    TOJ3651确定比赛名次
    TOJ3649欧拉回路
    强连通分量(LRJ训练指南)
    汉语-词语-体谅:百科
    汉语-词语-关心:百科
    汉语-词语-懒惰:百科
    汉语-词语-平静:百科
    汉语-词语-遗迹:百科
  • 原文地址:https://www.cnblogs.com/xiaowu54/p/14598555.html
Copyright © 2011-2022 走看看