java中的一些编程题目
来源:互联网 发布:devforge学编程社区 编辑:程序博客网 时间:2024/05/17 01:34
1,递归,实现全排列,不许有重复(字母或数字中含有相同字符)(主要是增加了判断两个数是否需要交换,是否需要以它为基准排列)
2,把一个数组里的数组合全部列出,比如1,和2组合列出来为:1,2,12,21(java版本和c++版本)
3,正则表达式(字符串的匹配)
4, 九 宫格的输出
1,递归,实现全排列,不许有重复(字母或数字中含有相同字符)
public class Allrange {
static void perm(int a[],int k,int m)
{
if(k>=m)
{
for(int i=0;i<=k;i++)
System.out.print(a[i]);
System.out.println();
return;
}
for(int i=k;i<=m;i++)
{
int j;
for(j=k;j<i;j++)
{
if(a[j]==a[i])
break;
}
if(j<i) continue;
swap(a,i,k);
perm(a,k+1,m);
swap(a,i,k);
}
}
static void swap(int a[],int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public static void main(String args[])
{
int a[]=new int[]{1,2,2};
perm(a,0,a.length-1);
}
}
//将一个数组中的字符的全部组合列出,1,2列出来为 1,2,21,12
#include<iostream>
#include<string>
using namespace std;
void AllList(string ss,string pre)
{
cout<<pre<<endl;
for(int i=0;i<ss.size();i++)
{
string temp=ss;
temp.erase(i,1);
AllList(temp,pre+ss[i]);
}
}
void main()
{
string ss;
cin>>ss;
AllList(ss,"");
}
java版本
import java.lang.*;
import java.util.*;
public class p74 {
public static void main(String args[])
{
String []array=new String[]{"1","2","3"};
listAll(Arrays.asList(array),"");
}
public static void listAll(List candidate,String pre)
{
System.out.println(pre);
for(int i=0;i<candidate.size();i++)
{
List temp=new LinkedList(candidate);
listAll(temp,pre+temp.remove(i));
}
}
}
3
在含有字母和数字的字符串中,找出所有的数字组成的字符串,
public class p188 {
static String s="32fdsfd8fds0fdsf9323k32k";
public static void main(String[] args)
{
String a=s.replaceAll("[^0-9]", "");
System.out.println(a);
}
}
4,先介绍一下九宫格(一个比较特别的方阵)
(1)抽象成计算机语言就是:在一个n*n的矩阵中填入1~n*n的数字(n必须为奇数),使得每一行、每一列、对角线的累加和都相等。
(2)思路:
A: 把 1 放在最后一行的中间
B: 每次向右下角走一步,然后出现了各种情况
1)如果下(行)出界了,就在最上面对应行位置填入下一个数字
2)如果右(列)出界了,就在最左边对应列的位置填入下一个数字
3)如果该位置没有出界,且已经填入了数字,就在没走这一步之前的那个位置的同一列的上一行填入下一个数字
还有一种版本的九宫格是跟这种思路相同,但是方向不同的。(如,1 放在第0行的中间,向右下角走改为向左上角走)
import java.util.Scanner;;
public class nine {
public static void main(String args[]){
int n;
//输入n值
do{
System.out.println("n必须是奇数:");
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
}while(n%2==0);
//开始设置方阵的值
int arry[][]=new int[n][n];
int row=n-1,col=n/2;
arry[row][col]=1;
for(int i=2;i<=n*n;i++)
{
row=row+1;
col=col+1;
if(row>=n) //是否下出界
row=0;
if(col>=n) //是否右出界
col=0;
if(arry[row][col]==0)
arry[row][col]=i;
else
{
row=(row-1+n)%n-1; //还原为原来元素的上一行
col=(col-1+n)%n; //还原为原来元素的同一列
arry[row][col]=i;
}
}
//输出方阵的值
for(int m=0;m<n;m++)
{ for(int k=0;k<n;k++)
{ System.out.print(arry[m][k]+"\t");
}
System.out.println();
}
}
}
- java中的一些编程题目
- java编程中的一些技巧
- java 一些算法题目
- java基础一些题目
- java编程中的一些共同的问题
- java socket编程中的一些问题
- java编程基础中的一些小细节
- java并发编程中的一些理解
- 一些在线编程的题目
- java编程题目
- Java程序设计编程题目
- JAVA编程典型题目
- Java网络编程中的一些异常Java.net
- 一些Java基础测试题目
- JAVA的一些课程设计题目
- 一些JAVA面试的题目吧一些记住的题目
- 编程中的一些注意事项
- 一些编程 中的技巧
- JBoss与IIS服务器集成(转载)
- 万年历(实用系统,非ACM题目)
- Android.mk 实用的实例
- Oracle PL-SQL中 左连接和右连接用法
- FULL JOIN
- java中的一些编程题目
- LAMP&phpmyadmin下的WordPress安装
- 初学html网页的制作
- matlab 使用技巧
- C++总结—面向对象
- 生内容主导的UGC模式和以机
- OCP 1Z0 052 48
- 分享一个jQuery分页插件,一个Bootstrap风格的分页插件
- 网络连接故障处理六部曲