• 笔试题:爱情数字


    这个怎么做?用暴力法解?所有可能排列,求最大值?

    下面是用Go语言实现的代码,组合遍历求解,不知道对不对

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"os"
    	"strconv"
    	"strings"
    )
    
    var tmplist []int
    
    func main() {
    	for {
    		// v, val := fmtRead()
    		v, val := bufioRead()
    		result := loveMagicNumber(v, val, 8)
    		fmt.Println("可油漆最大数字为:", result)
    		fmt.Println()
    	}
    }
    
    func bufioRead() (int, []int) {
    	var v int
    	var val = []int{}
    	r := bufio.NewReader(os.Stdin)
    	for {
    		fmt.Println("请输入油漆容量:(整数)")
    		strBytes, _, err := r.ReadLine()
    		str := strings.TrimSpace(string(strBytes))
    		v, err = strconv.Atoi(string(str))
    		if err == nil {
    			break
    		} else {
    			fmt.Println(err)
    		}
    	}
    	for {
    		fmt.Println("请输入1-9,九个数字各自需要的油漆:(整数)")
    		strBytes, _, err := r.ReadLine()
    		str := strings.TrimSpace(string(strBytes))
    		_ = err
    		strs := strings.Split(str, " ")
    		for i := 0; i < len(strs); i++ {
    			if strs[i] == "" {
    				continue
    			}
    			vt, _ := strconv.Atoi(strs[i])
    			val = append(val, vt)
    		}
    		break
    	}
    	fmt.Println("油漆容量:1-9数字耗费油漆量", v, ":", val)
    	return v, val
    }
    
    
    func loveMagicNumber(v int, val []int, index int) int {
    	if index < 0 {
    		return valueof(tmplist)
    	}
    
    	r1 := loveMagicNumber(v, val, index-1)
    	r2 := r1
    	if v-val[index] >= 0 {
    		tmplist = append(tmplist, index+1)
    		r2 = loveMagicNumber(v-val[index], val, index-1)
    		tmplist = tmplist[0 : len(tmplist)-1]
    	}
    	return max(r1, r2)
    
    }
    
    func valueof(valist []int) int {
    	value := 0
    	for _, i := range valist {
    		value = value*10 + i
    	}
    	return value
    }
    
    func max(a int, b int) int {
    	if a > b {
    		return a
    	}
    	return b
    }
    

      

     顺便吐槽下Go语言,Go语言的库不好用,不管什么标准输入获取、字符串操作Split,Atoi,非常反直觉,库文档写的也不是很清楚

  • 相关阅读:
    Microsoft SQL Server 自定义函数整理大全 [转]
    eclipse将android项目生成apk并且给apk签名
    Android实现对图片的缩放、剪切、旋转、存储
    Android 之 ProgressDialog用法介绍
    Android中Path类的lineTo方法和quadTo方法画线的区别
    Android仿微信二维码扫描
    Android中Bitmap,byte[],Drawable相互转化
    hibernate基础之无法自动创建表总结
    Android获取短信验证码
    Android之常见问题集锦Ⅰ
  • 原文地址:https://www.cnblogs.com/simplelovecs/p/5343020.html
Copyright © 2020-2023  润新知