博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法。
阅读量:7172 次
发布时间:2019-06-29

本文共 4087 字,大约阅读时间需要 13 分钟。

hot3.png

1,.N(1<=N<=9)个小熊分一堆苹果,第一只小熊将苹果分成N份,多了一个,扔掉,然后拿走自己的那一份。第二只熊将剩余的苹果分成N份,又多了一个,扔掉,然后拿走自己的那一份,第三只.....,直到第N只熊;问最初的苹果有多少个?

        public static int n =6;        static void Main(string[] args)        {            for (int i = 15550; i <= Int32.MaxValue; i++)            {                if (solve(i*3+1))                {                    Console.WriteLine(n + " " + (i * 3 + 1));                    break;                }            }        }        public static bool solve(int apple)        {            int b1 = (apple - 1) / 3;            for (int i = 2; i < n + 1; i++)            {                if (!(((Math.Pow(n - 1, i - 1)) * (apple + n - 1)) % (Math.Pow(n, i)) == 0))                { return false; }            }            return true;        }

225247_ullT_2403989.jpg

2.6*6的矩阵,从左上方开始,只经过向下或向右的步骤,到达右下方,找出经过的位置的最大价值;

200,120,400,150,180,300
150,250,360,120,200,130
350,300,250,100,500,260
100,150,260,320,100,150
500,130,260,100,200,170
160,100,250,200,600,200

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace test2{    class Program    {        static void Main(string[] args)        {          int[][] value = new int[][] {new int[]{200,120,400,150,180,300},               new int[] {150,250,360,120,200,130},               new int[] {350,300,250,100,500,260},               new int[] {100,150,260,320,100,150},               new int[] {500,130,260,100,200,170},               new int[] {160,100,250,200,600,200}};              work(value);            //show(value);        }     public static int work(int[][] value){        int[][] maxValue = new int[][]{            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},        };        int[][] path = new int[][]{            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},        };        maxValue[0][0] = value[0][0];        for (int i = 1; i < 6; i++) {            maxValue[0][i] = value[0][i]+maxValue[0][i-1];            path[0][i] =1;        }        for (int i = 1; i < 6; i++) {            maxValue[i][0] = value[i][0]+maxValue[i-1][0];            path[0][i] = 1;        }                 for (int i = 1; i < 6; i++) {            for (int j = 1; j < 6; j++) {                maxValue[i][j] =Math.Max(maxValue[i-1][j], maxValue[i][j-1])+value[i][j];                if (maxValue[i - 1][j] > maxValue[i][j - 1])                { path[i][j] = 0; }                else { path[i][j] = 1; }            }        }        show(maxValue);        Console.WriteLine();        show(path);        Console.WriteLine();        showstr(path);        return maxValue[5][5];    }        public static void show(int[][] mar)        {            foreach (int[] i in mar)            {                foreach (int x in i)                {                    Console.Write(x.ToString() + "  ");                }                Console.WriteLine();            }        }        public static void showstr(int[][] mar)        {           int[][] path = new int[][]{            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},            new int[]{0,0,0,0,0,0},        };            mar[0][0] = 1; mar[5][5] = 1;            int i = 5; int j = 5;            while (true)            {                if (!(i == 0 & j == 0))                {                    if (mar[i][j] == 0)                    {                       path[--i][j] = 1;                    }                    else                    {                        path[i][--j] = 1;                    }                }                else { break; }            }            show(path);        }    }}

231827_2T7L_2403989.jpg

思路最上,最左向右累加,其他部分取上方左方最大,累加下去。

路径思路,上面向右设为1,向下设为0,在第二个矩阵里进值,路径自最右下开始按方向开始,本题左左左上上上上上左左。结果为矩阵三

转载于:https://my.oschina.net/hunjixin/blog/508940

你可能感兴趣的文章
JSP/Servlet(三)
查看>>
DelayQueue在容错时的使用
查看>>
屏蔽silverlight 4应用中的右键菜单
查看>>
NAT原理简介
查看>>
内联表达式
查看>>
手动添加数据源时DataGridViewComboBoxCell值出问题解决方法
查看>>
函数声明优先于变量
查看>>
HDU-1003 Max Sum 动态规划
查看>>
Silverlight.XNA(C#)跨平台3D游戏研发手记:(九)3D 骨骼动画
查看>>
在.NET外散步之我爱贪吃蛇Python -常见语句(神奇的else)
查看>>
Known Issues
查看>>
文件相关操作工具类——FileUtils.java
查看>>
原:视频直播技术中的参考技术网页
查看>>
linq教程
查看>>
requests从api中获取数据并存放到mysql中
查看>>
23种设计模式之组合模式(Composite)
查看>>
button按钮点击不刷新(前端交流学习:452892873)
查看>>
安卓 使用Gradle生成正式签名apk文件
查看>>
@Html.Raw()
查看>>
ES6 Proxy
查看>>