Java面向对象编程(38)

简介: Java面向对象编程(38)

在计算机网络中,TCP和UDP协议的相似之处是()

A.面向非连接的协议

B.面向连接的协议

C.其余选项都不对

D.传输层协议

答案:D

在 OSI 参考模型中能实现路由选择,拥塞控制与互联功能的层是()

A.物理层

B.网络层

C.数据链路层

D.应用层

答案:B

在TCP/IP中,ICMP属于哪一层协议?

A.IP

B.PPP

C.UDP

D.TCP

答案:A

在发送TCP接收到确认ACK之前,由其设置的重传计时器到时,这时发送TCP会()

A.重传重要的数据段

B.放弃该连接

C.调整传送窗口尺寸

D.向另一个目标端口重传数据

答案:A

下列哪项最恰当地描述了建立TCP连接时“第一次握手”所做的工作()

A.“连接发起方”向“接收方”发送一个SYN-ACK段

B.“接收方”向“连接发起方”发送一个SYN-ACK段

C.“连接发起方”向目标主机的TCP进程发送一个SYN段

D.“接收方”向源主机得到TCP进程发送一个SYN段作为应答

答案:C

关于以下 URL 的描述错误的是()

A.http表明使用TCP协议

B.又名统一资源定位符,方便确定一个资源,并表示它在哪里

C.URL中隐藏了端口号,默认是80端口

D.访问URL可使用大写字母

答案:A

不属于交换机攻击的是()

A.目录遍历攻击

B.MAC泛洪攻击

C.VLAN攻击

D.DHCP欺骗攻击

答案:A

在下面给出的协议中,()是TCP/IP的应用层协议

A.ARP和FTP

B.DNS和SMTP

C.RARP和DNS

D.ICMP和IGMP

答案:B

IP地址块为211.168.15.192/26、211.168.15.160/27和211.168.15.128/27三个地址块经聚合后可用地址数为()

A.126

B.62

C.128

D.68

答案:A

以下不是合法HTTP请求方法的是()

A.GET

B.SET

C.HEAD

D.PUT

答案:B

红与黑

链接:红与黑__牛客网

来源:牛客网

 

有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的(上下左右四个方向)黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。

 

输入描述:

输入包含多组数据。


每组数据第一行是两个整数 m 和 n(1≤m, n≤20)。紧接着 m 行,每行包括 n 个字符。每个字符表示一块瓷砖的颜色,规则如下:


1. “.”:黑色的瓷砖;

2. “#”:白色的瓷砖;

3. “@”:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。

 

输出描述:

对应每组数据,输出总共能够到达多少块黑色的瓷砖。

示例1

输入

9 6

....#.

.....#

......

......

......

......

......

#@...#

.#..#.

输出

45

import java.util.*;
public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    while (sc.hasNext()) {
      int m = sc.nextInt();
      int n = sc.nextInt();
      sc.nextLine();
      Character[][] map = new Character[m][n];
      Node start = null;
      for (int i = 0; i < m; i ++ ) {
        String s = sc.nextLine();
        for (int j = 0; j < n; j ++ ) {
          map[i][j] = s.charAt(j);
          if(s.charAt(j) == '@') start = new Node(i, j);
        }
      }
      int[][] direction = {{0, 1}, {0, - 1}, {1, 0}, { - 1, 0}};
      bfs(map, direction, start);
    }
  }
  public static void bfs(Character[][] map, int[][] direction, Node start) {
    Queue<Node> queue = new LinkedList<Node>();
    boolean[][] visited = new boolean[map.length][map[0].length];
    queue.add(start);
    visited[start.x][start.y] = true;
    int count = 1;
    while ( ! queue.isEmpty()) {
      Node cur = queue.poll();
      for (int i = 0; i < 4; i ++ ) {
        Node next = new Node(cur.x + direction[i][0], cur.y + direction[i][1]);
        if(next.x >= 0 && next.x < map.length && next.y >= 0 && next.y < map[0].length && map[next.x][next.y] != '#' && ! visited[next.x][next.y]) {
          count ++ ;
          queue.add(next);
          visited[next.x][next.y] = true;
        }
      }
    }
    System.out.println(count);
  }
  static class Node {
    int x;
    int y;
    public Node(int x, int y) {
      this.x = x;
      this.y = y;
    }
  }
}

蘑菇阵

题目描述:现在有两个好友A和B,住在一片长有蘑菇的由n*m个方格组成的草地,A在(1,1),B在(n,m)。现在A想要拜访B,由于她只想去B的家,所以每次她只会走(i,j+1)或(i+1,j)这样的路线,在草地上有k个蘑菇种在格子里(多个蘑菇可能在同一方格),问:A如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到B的家的概率是多少?

输入描述:第一行N,M,K(1 ≤ N,M ≤ 20, k ≤ 100),N,M为草地大小,接下来K行,每行两个整数x,y,代表(x,y)处有一个蘑菇。

输出描述:输出一行,代表所求概率(保留到2位小数)

public class Main61 {
    public static double sover(int[][] map,int n,int m){
        double[][] dp=new double[n+1][m+1];
        dp[1][1]=1.0;
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= m; ++j) {
                if ( !(i==1 && j==1)){
                    dp[i][j]=dp[i-1][j]*(j==m ? 1.0:0.5)+dp[i][j-1]*(i==n? 1.0:0.5);
                }
                //(i,j)位置可能是蘑菇
                if (map[i][j]==1){
                    dp[i][j]=0.0;
                }
            }
        }
        //返回到B家不遇到蘑菇的概率
        return dp[n][m];
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            //构造地图
            int n=scanner.nextInt();
            int m=scanner.nextInt();
            int[][] map=new int[n+1][m+1];
            //放置蘑菇
            int k=scanner.nextInt();
            while ( 0 !=k){
                int x=scanner.nextInt();
                int y=scanner.nextInt();
                map[x][y]=1;
                k--;
            }
            //计算从A家到B家不遇到蘑菇的概率
            System.out.printf("%.2f\n",sover(map,n,m));
        }
    }
}
相关文章
|
4月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
42 7
|
4月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
49 5
|
4月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
6月前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
39 3
|
6月前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
154 57
|
4月前
|
存储 前端开发 JavaScript
【前端学java】面向对象编程基础-类的使用(4)
【8月更文挑战第9天】面向对象编程基础-类的使用
25 0
【前端学java】面向对象编程基础-类的使用(4)
|
4月前
|
Java 程序员 开发者
Java的面向对象编程:从基础到深入
【8月更文挑战第21天】在本文中,我们将探讨Java的面向对象编程(OOP)的核心概念,包括类、对象、继承、多态和封装。我们将通过实例和比喻,以通俗易懂的方式,深入理解这些概念的内涵和意义,以及它们如何影响我们的编程思维和实践。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更深入地理解Java的OOP,并启发你思考如何在你的项目中应用这些概念。
|
6月前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
67 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
5月前
|
Java API 项目管理
Java中的函数式编程与传统面向对象编程对比
Java中的函数式编程与传统面向对象编程对比
|
6月前
|
存储 安全 Java
深入探讨 Java 封装机制:为何它是面向对象编程的核心?
【6月更文挑战第16天】Java的封装是OOP核心,它将数据和操作数据的方法打包在类中,隐藏实现细节并提供公共接口。例如,`Student`类封装了私有属性`name`和`age`,通过`get/set`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
63 7