`
izhangh
  • 浏览: 594 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个算法的延伸

阅读更多
  int  i = 5; //根据i输出如下
  1  2  3  4  5
 16 17 18 19  6
 15 24 25 20  7
 14 23 22 21  8
 13 12 11 10  9
  


今天不小心看见有这么个题目,其实没什么新意。都是快老的不行了的题目。但绝大多数解题思路是按照值顺利赋值的。如果问题这么问当i=6,问值25的坐标在哪里?或是坐标(3,4)的值是多少?碰到这样的问题了,你不会也依次赋值完了,再去求值吧!闲来无事,写了段程序。请大家多多指点。

算法思路:每个点的值跟它的坐标有密切的关系。这个数组是由N个环构成的,如上,就由三个环,最里面的那个环仅有一个值25。像同心圆一层层包围,这是解题的关键。某内环上的点值等于所有外环上数出现的次数+当前环上按顺时针出现过次数之和。在求当前环上出现过次数就简单了吧!晕了~~~~~~~
直接上代码

class Question1 {

    public static void main(String[] args) {
        run(5);
    }
    public static void run(int num) {
        int[][] arr = new int[num][num];
        int x = -1;
        for (int i = 0; i < num * num; i++) {
            if (i % num == 0) {
                x++;
                System.out.println();
            }
            //按坐标顺序赋值
            arr[x][i % num] = getValue(x, i % num, num);
            System.out.format("%3s", arr[x][i % num]);
        }

    }
    private static int getLocation(int num, int x, int y) {
        int temValue = num / 2;
        int x1 = x;
        int y1 = y;
        if (x > temValue) {
            x1 = num - 1 - x;
        }
        if (y > temValue) {
            y1 = num - 1 - y;
        }
        if (x == temValue && x == y && num % 2 == 0) {
            return x;
        }
        return Math.min(x1, y1) + 1;
    }
    private static int getPreTotal(int num, int currLocation) {
        int total = 0;
        int sun = 0;
        int index = num;
        for (int i = 1; i < currLocation; i++) {
            sun = (index - 1) * 4;
            total = total + sun;
            index = index - 2;
        }
        return total;
    }
    private static int getValue(int i, int j, int num) {
        int loca = getLocation(num, i, j);
        int preTotal = getPreTotal(num, loca);
        int x = i;
        int y = j;
        if (loca != 1) {
            x = i - (loca - 1);
            y = j - (loca - 1);
        }
        int curr = getCurrValue(x, y, num - (loca - 1) * 2);
        return preTotal + curr;
    }
    private static int getCurrValue(int x, int y, int num) {
        if (x <= y) {
            return 1 + x + y;
        }
        else {
            return (num - 1) * 4 + 1 - (y + x);
        }
    }
}
0
0
分享到:
评论

相关推荐

    三维空间任意线段延伸算法C语言实现

    给你任意线段AB,沿AB和BA方向延伸指定长度生成新的线段A'B'。 接口定义: void ExtendAB(GPT_t& ptNewA, GPT_t& ptNewB, GPT_t ptA, GPT_t ptB, float dLen);

    强化学习算法-基于python的策略迭代算法policy_iteration实现

    强化学习是人工智能领域的一个重要分支,它通过与环境的交互来学习最优行为策略。策略迭代(Policy Iteration)是强化学习中的一种经典算法,适用于离散状态和动作空间的问题。本篇文章将深入探讨如何在Python中实现...

    向weka中添加新算法(扩展与延伸)

    在数据挖掘领域,Weka是一个广泛使用的开源工具,它提供了大量的机器学习算法和数据预处理功能。本主题聚焦于如何向Weka中添加新的算法,这通常涉及到对源代码的扩展和修改,以便将自定义的算法集成到这个强大的平台...

    机器学习算法分类

    机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。...这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性。

    MATLAB智能算法30个案例分析——源代码.rar

    第1章谢菲尔德大学的MATLAB遗传算法工具箱 1.1理论基础 1.1.1遗传算法概述 1.1.2 谢菲尔德遗传算法工具箱 1.2案例背景 1.2.1 问题描述 1.2.2解题思路及步骤 1.3 MATLAB程序实现 1.3.1工具箱结构 ...

    MATLAB智能算法30个案例分析(第2版)+matlab代码.zip

    MATLAB智能算法30个案例分析(第2版),带标签 第1章谢菲尔德大学的MATLAB遗传算法工具箱机器学习 1.1理论基础 1.1.1遗传算法概述 1.1.2 谢菲尔德遗传算法工具箱 1.2案例背景 1.2.1 问题描述 1.2.2解题...

    设计一个算法,将一个栈中的元素排序

    【设计一个算法,将一个栈中的元素排序】 在计算机科学中,栈是一种具有后进先出(LIFO)特性的数据结构。对于给定的问题,我们需要设计一个算法,利用一个辅助栈来对栈中的元素进行排序。这个过程类似于将一个无序...

    智能算法30个案例

    【智能算法30个案例】MATLAB中的遗传算法是一种基于生物进化原理的全局优化方法,它通过模拟自然选择和遗传机制来寻找问题的最佳解决方案。在本案例中,我们将深入探讨遗传算法的基本概念、MATLAB中实现遗传算法的...

    我自己实现的一个matlab遗传算法及一份课件

    通过学习和实践这个MATLAB遗传算法实现,读者不仅可以掌握遗传算法的基本原理,还能了解到如何将其应用于实际问题的求解,从而提升在人工智能领域的理论素养和编程能力。 总之,这个MATLAB遗传算法实例和相关课件是...

    广义逼近信息传递算法

    本压缩包提供的"GAMPmatlab"代码集,是GAMP算法在MATLAB环境下的实现,这对于研究者和工程师来说是一个宝贵的资源。通过这些代码,你可以理解GAMP算法的细节,学习如何将其应用于不同的信号恢复问题,并进行参数调优...

    基于RRT算法的路径规划实现(matlab)

    3. **连接节点**:从最近邻居出发,沿着某个方向(如直线或曲线)向目标节点延伸,生成一个新的树节点。这个新节点通常位于最近邻居和目标节点之间,但为了保证路径的局部优化,新节点可以有一定的偏移。 4. **碰撞...

    机器学习常见算法分类

    1. 监督式学习:在监督式学习中,输入数据被标识,每组训练数据有一个明确的标识或结果。常见的应用场景包括分类问题和回归问题。常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation ...

    PPSO-master_博士_粒子群算法_GA算法_粒子群_kennedy_

    简介 粒子群优化算法(PSO)是一种进化计算技术...算法 2.1问题抽象 鸟被抽象为没有质量和体积的微粒并延伸到N维空间粒子i在N维空间的位置表示为矢量Xi=(x1x2...xn)飞行速度表示为矢量Vi=(v1v2...vn)。每个粒子都有一

    三维图像细化算法

    细化过程的一个关键目标是在提取骨架的同时保持原有的拓扑特性。拓扑保护意味着细化后的骨架应该保留原始对象的连通性属性,例如连通分量的数量、洞的数量等。为了确保这一点,细化算法必须精心设计以避免意外地删除...

    机器学习常见算法分类.doc

    机器学习是当前数据分析领域的一个热点容,许多人在平时的工作中都或多或少会用到机器学习的算法。根据学习方式和算法的类似性,我们可以将机器学习算法分类如下: 监督式学习 监督式学习是指在学习过程中,输入...

    人工智能时代的算法权力:逻辑、风险及规制.pdf

    算法权力并非仅仅是技术层面的问题,更是一个深刻影响社会结构和运行机制的现象。在解读了“人工智能时代的算法权力:逻辑、风险及规制.pdf”这篇文档之后,我们能够从以下几个方面详细了解算法权力的内涵、风险以及...

    最短路问题迪杰斯特拉算法PPT课件.pptx

    迪杰斯特拉算法的思路是从始点出发,逐步顺序地向外探寻,每向外延伸一步都要求是最短的。这意味着,算法会从始点开始,逐步探寻所有的邻接点,并计算从始点到这些点的最短路长度。 迪杰斯特拉算法的使用条件: ...

    彩色图像分割算法

    随着计算机处理能力的提升以及彩色图像在各个领域的广泛应用,彩色图像分割技术逐渐成为图像处理领域的一个热点问题。彩色图像分割可以被视为灰度图像分割方法在彩色图像上的延伸,但由于彩色图像具有丰富的信息特性...

    LMS算法示例

    该算法不需要已知输入信号和期望信号的统计特征,“当前时刻”的权系数是通过“上一 时刻”权系数再加上一个负均方误差梯度的比例项求得。这种算法也被称为 Widrow-Hoff LMS 算法,在自适应滤波器中得到广泛应用, ...

Global site tag (gtag.js) - Google Analytics