关于移动棋子的那道题,要求放置第i个棋子时有一个格子至少有i个棋子的最少操作数。棋子位置不同,要将i个棋子移动到同一个格子中,那就是i-1个棋子移动到某一个棋子的同一行同一列,那就行列分别移动求最小距离即最小操作数。解法有点暴力,或者解法根本不对。。。。 public class Dynamic { /** * @param args * */ public void findOneByOne(int []x, int[]y,int n){ if(x==null || y==null || n==0) return; for(int i=1;i<=n;i++){ int times=findMin(x,y,i); System.out.print(times+" "); } } private int findMin(int [] x, int[] y,int n){ int minx=Integer.MAX_VALUE; int miny=Integer.MAX_VALUE; for(int i=0;i<n;i++ ){ int total=0; for(int j=0;j<n;j++){ if(i!=j){ total+=Math.abs(x[j]-x[i]); } } minx=total<minx?total:minx; } for(int i=0;i<n;i++ ){ int total=0; for(int j=0;j<n;j++){ if(i!=j){ total+=Math.abs(y[j]-y[i]); } } miny=total<miny?total:miny; } return minx+miny; } public static void main(String[] args) { // TODO Auto-generated method stub int a[]={1,2,4,9}; int b[]={1,1,1,1}; int n=4; new Dynamic().findOneByOne(a, b, n); } }
点赞 评论

相关推荐

Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
牛客网
牛客企业服务