java数据结构问题。请高手帮帮小弟

ainterpol 2004-08-28 11:57:16
说明:
本次测试包括5道题目,全部都是程序题,要求必须使用Java代码实现,注释和说明在代码中要详细,并且要在机器上调试通过,注意要在每个Java类中的main中编写测试代码。

试题一
一张单据上有一个5位数的号码,其千位数和百位数已涂抹不清;另一方面,我们知道这个数能被57或67除尽。设计一个算法,找出该单据的可能号码。

试题二
计算从y1年m1月d1日到y2年m2月d2日之间的天数。其中 y1,y2,m1,m2,d1,d2 是参数可由程序的使用者随意输入。注意:对用户输入的参数要检查其参数的有效性。

试题三
在一个直角三角形中,三条边a、b、c的长度都为整数, 且一条直角边a的长度已确定,斜边c的长度不能超过 maxc,设计一个算法找出满足上述条件的所有直角三角形。

试题四
计算斐波那数列 f(n)=f(n-1)+f(n-2); f(0)=1 ;f(1)=2; 。提示:用递归实现

试题五
有一个背包,能盛放的物品总重量为 S,设有 N 件物品,其重量分别为w1,w2,...,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于 S 。
...全文
234 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ainterpol 2004-08-31
  • 打赏
  • 举报
回复
几道都弄好了有空我就贴上来给大家看看
ainterpol 2004-08-30
  • 打赏
  • 举报
回复
还请各位高手花点时间帮我写写。 我还有今天的作业。能像笑天那样的真是感激不尽啊
ainterpol 2004-08-30
  • 打赏
  • 举报
回复
谢谢大家 出此下策实非本意。
jackkui 2004-08-29
  • 打赏
  • 举报
回复
试题1
for(int i = 10000/57 ; i < 10000/57 ; i++)
{
result = i*57;
//比较以下是否在你要的数据中,用字符串比较
}
for(int i = 10000/67 ; i < 10000/67 ; i++)
{
result = i*67;
//比较以下是否在你要的数据中,用字符串比较
}
这样就不用穷举了
试题2
可以通过一的参数
获得long型的time,为t1
通过给出的参数二获得long型time,为t2
(t2-t1)/(24*3600*1000)
这样就得到天了
dinosaurain 2004-08-28
  • 打赏
  • 举报
回复
这是第二题.刚好写了一个
使用的Date类.现在这个是不被推荐使用的类.
不过功能还是完成了.想改就自己改吧.

import java.util.*;

/*
* Created on 2004-8-12
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/

/**
* @author FreeKnight
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class MyDay {


public static void main(String[] args) {

int total = 0;
Date beday = new Date(2001,10,7);//开始的日期
Date today = new Date();//当前日期,你可以自己把它改为需要的日期
today.setYear(today.getYear()+1900);//如果你使用的是自定义的当前日期.这行可以注释掉
int[] nomalday = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int[] ennomalday = {0,31,29,31,30,31,30,31,31,30,31,30,31};

//取得开始年份当月所过的天数,
if (beday.getYear() % 4 == 0 && beday.getYear() % 400 != 0)
{
total += ennomalday[beday.getMonth()] - beday.getDate();
}
else
total += nomalday[beday.getMonth()] - beday.getDate();
//取得当前年份的月份所过的天数
total += today.getDate();

//取得开始年份所过月份的天数
for (int i = beday.getMonth()+1 ; i<= 12; i++)
{
if(today.getYear() % 4 == 0 && today.getYear() % 400 !=0)
{
total += ennomalday[i];
}
else
{
total += nomalday[i];
}
}
//取得当前年份所过月份的天数
for (int i = 1; i < beday.getMonth() ; i++)
{
if(today.getYear() % 4 == 0 && today.getYear() % 400 !=0)
{
total += ennomalday[i];
}
else
{
total += nomalday[i];
}
}

// 取得所差整年的天数
for (int i = beday.getYear() + 1; i < today.getYear(); i++)
{
if(i % 4 == 0 && i % 400 !=0)
{
total += ennomalday[beday.getMonth()];
total += 366;
}
else
{
total += nomalday[beday.getMonth()];
total += 365;
}
}

System.out.println("两年相差的天数 :" + total);
}
}
ZhangYv 2004-08-28
  • 打赏
  • 举报
回复
呵呵,MM的宿舍我可以帮你整理:)
如果上论坛只想要代码是不现实的事情,因为没有人是你的义务家教或者代码工人。
ainterpol 2004-08-28
  • 打赏
  • 举报
回复
呵呵  真的不好意思学,两年了都这样的水平。 这两天忙帮MM整理宿舍真的没时间做。
希望有人给帮我写写代码。循环最好用叠代。不要用 for.... 这样的。  十分感谢
ZhangYv 2004-08-28
  • 打赏
  • 举报
回复
大概是JAVA有无数的库可以使用,所以最容易偷懒吧... :)

1. 用循环嵌套,穷举 千和百位的数字

2. 注意大月 和 小月,及2月份的特殊性

3. 利用公式 c^2 = a^2 + b^2 及 maxc = a+b+c: 已知a的长度,用循环穷举符合上述两方程的b,c的值。

4.
long fibonacci(long n)
{
if (n == 1)
return 1;
else (n == 2)
return 2;
else
return fibonacci(n-1) + fibonacci(n-2);
}

5. 是背包问题,是属于NP难的,可以利用回朔算法。可以GOOGLE,有无数的代码...
perman 2004-08-28
  • 打赏
  • 举报
回复
看到楼上的说没有,懒!!!
seril 2004-08-28
  • 打赏
  • 举报
回复
不要偷懒啊,多自己写点代码,熟能生巧
donnydream 2004-08-28
  • 打赏
  • 举报
回复
你是出学Java吧!怎么能偷懒呢?
liusoft 2004-08-28
  • 打赏
  • 举报
回复
偷懒??

http://www.javayou.com

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧