zoukankan      html  css  js  c++  java
  • 一道腾讯面试题

    偶然看到一道腾讯面试题:

    题目:给定一个8*8的方格子,如下图所示,求A点到B点的最短路径有多少条?用算法实现。

    想出了一种很简单的方法解决这个问题,A点到B点的最短路径肯定是16,其中8步横走,8步竖走,设横走为'1',竖走为'0',那么最短路径是一个16位的二进制字符串。只要一个16位二进制字符串里面有8个'1',或者8个'0',那么这个二进制字符串就是一条可行的最短路径。

    0000000000000000=0

    1111111111111111=65535

    把0~65535之间的每一个数字转换成二进制字符串,再数其中'1'或者'0'的个数是否是8,就可以判断是不是一条可行的最短路径。

    package Transfer;
    
    public class findNumber {
    
    	static int num=0;
    	static String s;
    	
    	public static void main(String[] args) {
    		for (int i=0; i<65536; i++){
    			s = Integer.toBinaryString(i);
    			if (isRight(s)){
    				num++;
    				System.out.println(s);
    			}
    		}
    		System.out.println("解的数量为:" + String.valueOf(num));
    	}
    	
    	static boolean isRight(String s){
    		boolean res = false;
    		int x=0;
    		char c;
    		for(int i=0; i<s.length(); i++){
    			c = s.charAt(i);
    			if (c == '1')
    				x++;
    		}
    		if (x == 8)
    			res = true;
    		return res;
    	}
    
    }
    

    运行结果:

      

  • 相关阅读:
    with open 向文件的某一固定行,追加内容
    静态语言 与 动态语言 的区别
    ELK
    matplotlib绘图
    django用户认证
    django+uwsgi+nginx 部署生产环境
    图片验证码+session
    ajax
    form
    middleware中间件
  • 原文地址:https://www.cnblogs.com/mstk/p/4742364.html
Copyright © 2011-2022 走看看