科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道AIX 程序设计大赛---AIX正方形问题

AIX 程序设计大赛---AIX正方形问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将为大家介绍AIX 程序设计大赛---AIX正方形问题。

作者:成晓旭 来源:CSDN 2008年2月27日

关键字: 正方形 java AIX

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

作为“算法及实现”栏目的“抛砖引玉”之作,将自己2年多前实现的一个算法放出来。有一年IBM出了这个Java程序设计竞赛题,当时,自己花晚上时间用Java实现了。

[问题描述]:

任意给定一个正方形,将正方形的各边做n等分,并将相应各点连接成水平或垂直的直线,如果从正方形的左下角(0,0)出发,沿各边线或连接线,自左向右或自下而上的方向,到达正方形的右上角(n,n),请用JAVA程序计算并输出所有可能的路径总数和具体线路.请提供相关JAVA源程序和n=2,3,4时的输出结果。输出结果按以下方式:

n=1为例:

n = 1

Path1: (0,0) - (0,1) - (1,1)

Path2: (0,0) - (1,0) - (1,1)

Total = 2

[设计简介]

共设计3个类:

AixPoint:正方形问题的低层处理类,抽象正方形问题的每个访问点信息;
AixSquare:正方形问题的核心处理类,抽象正方形算法处理过程;
AixContest:正方形问题的客户调用处理类,抽象正方形问题的应用层。

[算法源码]

AixPoint源码:

/*******************************************************************************
 *    <<AIX 程序设计大赛---AIX正方形问题>>
 *            AIXContest  ver1.0
 *        开发作者:    成晓旭
 *        项目简述:    AIX程序设计的Java程序设计"AIX正方形问题"解决方案
 *        启动时间:    2004年01月14日    20:00:08
 *        完成时间:    2003年01月14日  20:09:00    <1个晚上>
 *
 *        开发环境:    Windows2000 Professional + SUN J2SE1.4.2
 *        开发工具:    Rational Rose2002 Enterprise + JCreator2.5Pro
 *
 *        文件名称:    AixPoint.java
 *        简    介:    正方形问题的低层处理类,抽象正方形问题的每个访问点信息
 *
 *        备    注:    <本系统的底层抽象>
 *                        
 *        修改时间1:    
 *
 *****************************************************************************
*/

package    CXXSoft.Aix;
import java.awt.Point;

public class AixPoint extends Point
{
    
private int     moveUnit;
    
public boolean aheadExcess;
    
public boolean aboveExcess;
    
    
//类构造器
    public AixPoint()
    
{
        aheadExcess 
= false;
        aboveExcess 
= false;
        moveUnit 
= 1;
    }

    
    
//类构造器
    public AixPoint(int x,int y)
    
{
        
this();
        
this.x = x;
        
this.y = y;
    }

    
    
//类构造器
    public AixPoint(Point p)
    
{
        
this();
        
this.x = p.x;
        
this.y = p.y;
    }

    
    
//向左移动(前进)
    public void goAhead()
    
{
        
this.x += moveUnit;
    }

    
    
//向左的反方向移动(后退)
    public void goAheadReturn()
    
{
        
this.x -= moveUnit;
    }

    
    
//向上移动
    public void goAbove()
    
{
        
this.y += moveUnit;
    }

    
    
//向上的反方向移动(后退)
    public void goAboveReturn()
    
{
        
this.y -= moveUnit;
    }

    
    
//形成输出串
    public String toString()
    
{
        
return "("+ x + "," + y +")";
    }

}
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章