搜索
skillart
It is me.
展开
-
放棋子
今有 6 x 6 的棋盘格。其中某些格子已经预先放好了棋子。现在要再放上去一些,使得:每行每列都正好有3颗棋子。我们希望推算出所有可能的放法。 初始数组中,“1”表示放有棋子,“0”表示空白。public class Test { public static int kind=0; public static int x[][] = new int[][] {原创 2013-04-10 12:46:45 · 1266 阅读 · 0 评论 -
全排列的实现
以前做未考虑重复的情况,今天看了一篇博客就改成java的了。public class FullPerm { static int kinds=0; public static boolean isRepeat(int a[],int start,int end) { for (int i = start; i < end; i++) if (a[i] == a原创 2013-07-07 15:21:10 · 798 阅读 · 0 评论 -
【蓝桥杯】带分数
算法:暴力枚举会超时,所以选择dfs+剪枝。边全排列边试验。num=num1+num2/num3;分析一下可以知道num1num3; num2%num3==0; 这正是剪枝的条件。把num转换为字符串,算出有多少位。比如num=256,长度begin=3。把全排列的字符串也转化为字符串,长度为9,比如str= 348576192。由上面的条件知道,num1最多也就从str截取最原创 2013-05-08 22:19:21 · 6456 阅读 · 5 评论 -
noj 吝啬的国度
建立一个双向的图,从出发点遍历一遍用数组存储上一个顶点即可。import java.util.*;public class Main { static List list; static Map> map; static void store(int a,int b) { list=map.get(a); if(list==null) list=new Ar原创 2013-05-21 13:47:50 · 1460 阅读 · 2 评论 -
noj skiing
import java.util.*;public class Main { static int max,sum; static int h[][]=new int[1002][1002]; //static int a[][]=new int[1002][1002];//这个打算打表优化的,AC了就没用上。 static void dfs(int h[][],原创 2013-05-19 02:11:19 · 795 阅读 · 0 评论 -
zoj 1002
和8皇后很类似。算法思路:深搜先列后行,如果当前位置不能放置,则转到下一行。当行达到n时,比较得到最大值max。import java.util.Scanner;public class Main{ static int max=0,sum=0; static boolean place(char a[][],int r,int c)//当前位置是否能够放置 {原创 2013-05-17 01:29:08 · 879 阅读 · 0 评论 -
hdu 1372
写了太多的dfs,明天就要考试了,写个bfs。好久没有写bfs,有些细节都不熟悉了。本题的意思就是在8X8的棋盘,马走日。其实就是迷宫的变形。不难。import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;class Point{ int x, y; int step;原创 2013-05-04 21:02:45 · 830 阅读 · 0 评论 -
3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍.
这道题本来很容易的,就是一次全排列然后检查而已。public class Test3{ static int kinds=0; static int b[]=new int[10]; static boolean vis[]=new boolean[10]; public static void main(String[] args) { int a[]=new原创 2013-04-27 21:59:45 · 3340 阅读 · 0 评论 -
票价5毛,上车的m人有带5毛的,有n人带1元的,求上车方案
public class Test3{ static int kinds=0,sum=0; static int c[]=new int[10000]; static int len=0; public static void main(String[] args) { int m=5,n=3; len=m+n; if(m<n) System.out.p原创 2013-04-27 21:47:09 · 988 阅读 · 0 评论 -
取字母组成串 A B C D中取5次,每个字母都可以重复取出,形成一个串
这道题很水。但看到一段NB的代码,写出来mark一下。下面这段是鄙人丑陋的dfs。public class Tset{ static int b[]=new int[5]; static int kinds=0; public static void main(String[] args) { dfs(0,5); System.out.println("原创 2013-04-27 23:48:23 · 3378 阅读 · 1 评论 -
连连看 连线算法
先得到所有路径,暑假开发android连连看时再用。package com.test.action;class Point{ int x,y;//坐标 int t;//拐点个数 Point preturn;//上一个拐点 public Point(int xx,int yy,int tt,Point turnPoint) { x=xx; y=yy;原创 2013-06-12 21:29:45 · 3414 阅读 · 0 评论