• 芯片测试


    蓝桥杯基础练习:芯片测试

    问题描述
      有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。
      每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。
      给出所有芯片的测试结果,问哪些芯片是好芯片。
    输入格式
      输入数据第一行为一个整数n,表示芯片个数。
      第二行到第n+1行为n*n的一张表,每行n个数据。表中的每个数据为0或1,在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯片测试第j块芯片时得到的测试结果,1表示好,0表示坏,i=j时一律为1(并不表示该芯片对本身的测试结果。芯片不能对本身进行测试)。
    输出格式
      按从小到大的顺序输出所有好芯片的编号
    样例输入
    3
    1 0 1
    0 1 0
    1 0 1
    样例输出
    1 3
     
    思路:我们先假设第一行是正确的,那么第一行所得到的结果就是整个的芯片好坏的情况。
    正确的条件:
    (1)有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。--->得出好的芯片good > n/2。
    (2)因为我们是假设某一行是正确的,那么要想到如何确定他是否正确的。所以找到了一个矛盾条件,如果该芯片a是好的,它认为芯片b也是好的,但是b芯片认为a是坏的。意味着当前假设不成立,需要换另一行。 
     1 import java.util.Scanner;
     2 
     3 public class Main {
     4     public static void main(String args[]){
     5         Scanner sc = new Scanner(System.in);
     6         int n = sc.nextInt();
     7         int[][] array = new int[n][n];
     8         for(int i=0;i<n;i++){
     9             for(int j=0;j<n;j++){
    10                 array[i][j] = sc.nextInt();
    11             }
    12         }
    13         int good=0,bad=0;
    14         boolean book = true;
    15         for(int i=0;i<n;i++){
    16             for(int j=0;j<n;j++){
    17                 if(array[i][j]==1){
    18                     if(array[j][i]==1)
    19                         good++;
    20                     else {
    21                         book = false;
    22                         break;
    23                     }
    24                 }else{
    25                     bad++;
    26                 }
    27             }
    28             if(book){
    29                 if(good > n/2){
    30                     for(int j=0;j<n;j++){
    31                         if(array[i][j] == 1){
    32                             System.out.print(j+1+" ");
    33                         }
    34                     }
    35                     break;
    36                 }
    37             }
    38         }
    39     }
    40 
    41 }
  • 相关阅读:
    DataGridView在vb.net中的操作技巧
    0、(空字串)、Null、Empty、与Nothing的区别
    System.Timers.Timer与System.Windows.Forms.Timer 区别
    C#判断常见类型格式是否正确的类
    C#对系统注册表操作的类
    Socket基础知识分享
    怎样才能充分利用SQL索引
    通过建立Socket连接来快速判断数据库连接是否正确
    C#中各种数据类型转换的方法的类
    VB.Net C#代码转换工具
  • 原文地址:https://www.cnblogs.com/techgy/p/12515649.html
Copyright © 2020-2023  润新知