zoukankan      html  css  js  c++  java
  • 阿里2018校招编程题

    找朋友组队,输入一个N*N的二维数组,数组由0和1组成。第i行第j列的数据为1,表示i与j是朋友,可以一起组队,如M[1]和M[2],M[2]的朋友也可以加入到该队中,只要有朋友关系的都可以加入到同一对,而M[3]只能自己组队,因此最少需要组的对数是2. 
    M[1] = (1,1,0) 
    M[2] = (1,1,0) 
    M[3] = (0,0,1)

    import java.util.*;
    public class Main {
        static int findCircleNum(int[][] M) {
            int num=0;
            ArrayList F = new ArrayList();
            for(int i=0;i<M.length;i++){
                if(F.contains(i)){//如果i已经在已组队队列中了,直接跳出
                    break;
                }
                boolean flag = false;//用于判断i加入已组队序列是否是利用朋友关系进入一个队
                for(int j=0;j<M[i].length;j++){
                    if(M[i][j]==1 && i!=j){
                        if(F.contains(j)){  //判断i的朋友j是否已组队成功,是则跳出循环,因为i可以和j在同一个队,无需开一个新队
                            F.add(i); //i组队成功,加入已组队序列
                            flag = true;
                            break;
                        }
                    }
                    if(j == M[i].length-1){  //如果遍历到最后一个数,还没有组队成功,i开设一个新队,并加入已组队序列
                        F.add(i);
                    }
                }
                if(flag==false){  //如果i的朋友都还没有组过队,则队数加一
                    num++;
                }
            }
            return num;
        }
    
        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            int res;
    
            int _M_rows = 0;
            int _M_cols = 0;
            _M_rows = Integer.parseInt(in.nextLine().trim());
            _M_cols = Integer.parseInt(in.nextLine().trim());
    
            int[][] _M = new int[_M_rows][_M_cols];
            for(int _M_i=0; _M_i<_M_rows; _M_i++) {
                String row_x=String.valueOf(in.nextLine().trim());
                String[] row_y=row_x.split(",");
                for(int _M_j=0; _M_j<_M_cols; _M_j++) {
                    _M[_M_i][_M_j] = Integer.parseInt(row_y[_M_j]);
                }
            }
    
            if(in.hasNextLine()) {
                in.nextLine();
            }
    
            res = findCircleNum(_M);
            System.out.println(String.valueOf(res));
    
        }
    }
    来源 https://blog.csdn.net/flyfish111222/article/details/77604499
  • 相关阅读:
    口袋摸球
    后渗透(四)数据包捕获
    后渗透(二)权限提升
    文件上传11-21
    MySQL之UDF提权
    《白帽子讲Web安全》读书笔记(一)
    XSS盲打获取cookies&&XSS钓鱼&&XSS键盘记录
    nginx目录穿越漏洞复现&&nginx目录遍历漏洞复现
    python教程(一)·简介
    DataPipeline如何实现数据质量管理?
  • 原文地址:https://www.cnblogs.com/lizhiwei8/p/9578556.html
Copyright © 2011-2022 走看看