当前位置:编程学习 > JAVA >>

2011软件设计大赛编程

若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。(用java实现)
输入
输入文件的第一行有一个正偶数N(N≤200),表示待挑选的自然数的个数。第二行给出N个不超过30000的正整数,相邻的两个数之间用一个空格分开。
输出
对每个正整数,输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。
输入样例                              输出样例
4                                 
2  5  6  13                              2

--------------------编程问答-------------------- 有够无聊的

毫无意义的问题 --------------------编程问答--------------------  你咋就不给力  什么叫毫无意义 有本事做出来 --------------------编程问答--------------------  我还是去做增删改查吧~~ --------------------编程问答-------------------- 做这个题,一没钱,二没实际用处,我做它作甚! --------------------编程问答-------------------- 不要让哥鄙视你行不 
--------------------编程问答-------------------- 这种题,也就给没事的学生做一做了,一不为钱,二为好玩 --------------------编程问答--------------------
咋能别丢人行不?
2011“国信蓝点杯”全国软件专业人才设计与开发大赛听说过没 ?
继续鄙视你
----------------------------------------------------------------
--------------------编程问答-------------------- 还真没听说过

除了acm我还真没听说过其他什么乱七八糟的大赛 --------------------编程问答-------------------- 一边去 
你out了
//------------------ --------------------编程问答-------------------- 如没有猜错,你肯定是学生! --------------------编程问答-------------------- 晕,这还用猜吗? 不用猜 你也不是学生 --------------------编程问答-------------------- 只有学生才这么无聊 --------------------编程问答-------------------- 不要用无聊这些低级词汇来形容学生这些热血青年 --------------------编程问答-------------------- 题够无聊的 ,那比赛我也参加过,题简单 ,但是选择题我一个都没做出来 --------------------编程问答-------------------- 此次好像没选择题呀,就是编程题和程序完善! --------------------编程问答-------------------- 呃……我用C语言做出来过~
地址如下:
http://blog.sina.com.cn/s/blog_702c2db50100rnjz.html

这是不久前在C语言版那边看到题的时候做的,本来想来搜一搜还有没其他解法~结果不小心看到这个了
PS:鄙视那些说无聊的人,这题的核心算法非常有用,一看就是那些没有学好图论的孩子 --------------------编程问答-------------------- 恩 赞 
-------------------------------------
用java实现的不 知道有没错误 
package matchfour;
import java.io.IOException;
import java.util.*;
public class Four {
int count=0;
Vector<int[]> team=null;
public Four()
{
team=new Vector<int[]>();
String s=enterstring("count");
String data=enterstring("value");
Vector<Integer> v=aplitdata(data);
Vector<int []> iv=getin(v);
int n=checkteam(iv);
System.out.println("有"+n+"组");
count=Integer.parseInt(s);
}
public String enterstring(String warn)
{
System.out.println("please enter "+warn +" : ");
byte []str=new byte[100];
int n=0;
try {
n=System.in.read(str);
} catch (IOException e) {
System.out.println("one occured excepton:"+e.getMessage());
e.printStackTrace();
}
return new String(str).substring(0, n-2);
}
/*
 * split the data
 * 
 */
public Vector<Integer> aplitdata(String str)
{
      Vector<Integer> data=new Vector<Integer>();
      StringTokenizer s=new StringTokenizer(str," ");
      int n=s.countTokens();
      for(int i=0;i<n;i++)
      {
       String temp=s.nextToken();
       int value=Integer.parseInt(temp);
       data.addElement(value);
      }
      return data;
}
/*
 * get the the data
 */
public Vector<int []> getin(Vector<Integer> v)
{
int m=0;
   for(int i=v.size()-1;i>=0;i--)
   { 
  for(int j=i-1;j>=0;j--)
  {
  int re=v.get(i)+v.get(j);
  int data[]=new int[2];
  if(re%2!=0)
  {
  m++;
 data[0]=v.get(i);
 data[1]=v.get(j);
 team.addElement(data);
  }
  }
   }
   return  team; 

/*
 * end to check the vlaue team
 */
public int checkteam(Vector<int[]> team)
{
int theend=0;
for(int i=team.size()-1;i>=0;i--)
{
for(int j=i-1;j>=0;j--)
{
int dataa1=team.get(i)[0];
int dataa2=team.get(i)[1];
int datab1=team.get(j)[0];
int datab2=team.get(j)[1];
if(dataa1!=dataa2&&dataa1!=datab1&&dataa1!=datab2&&dataa2!=datab1&&dataa2!=datab2&&datab1!=datab2)
{
theend++;
}
}
}
return theend;
}
public static void main(String []args)
{
  new Four();
}
}
--------------------编程问答--------------------
引用 8 楼 ticmy 的回复:
还真没听说过

除了acm我还真没听说过其他什么乱七八糟的大赛

额,个人觉得这个比赛真的挺坑爹。。。。获奖率100%。。。。算法还是ACM比较靠谱
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,