試験問題の基本的なエクササイズチップテスト(Java)

試験問題基本的な運動チップテスト

リソース制限

時間制限:1.0秒メモリ制限:512.0MB

問題の説明

  n個(2≤n≤20)のチップがあり、良いチップも悪いチップもあり、良いチップは悪いチップよりも多いことが知られています。  各チップは、他のチップのテストに使用できます。良いチップで他のチップをテストするとき、テストされたチップが良いか悪いかを正しく与えることができます。不良チップを使用して他のチップをテストすると、ランダムに良好または不良のテスト結果が得られます(つまり、この結果は、テストされるチップの実際の品質とは関係ありません)。  すべてのチップのテスト結果を提供し、どのチップが良いチップかを尋ねます。

入力フォーマット

  入力データの最初の行は、チップの数を示す整数nです。  2行目からn + 1行目は、各行にn個のデータがあるn * nテーブルです。表の各データは0または1です。n行のi行j列(1≤i、j≤n)のデータは、j番目のチップをi番目のチップでテストしたときに得られたテスト結果を表します、1は良好、0は不良、i = jの場合は常に1になります(チップ自体のテスト結果を意味するわけではありません。チップ自体はテストできません)。

出力フォーマット

  小さいチップから大きいチップの順に、すべての良好なチップの数を出力します

入力例

3 1 0 1 0 1 0 1 0 1

出力例

1 3

コード

1  インポートjava.util.Scanner;
2  java.util。*をインポートします。
3  4 5 パブリッククラスメイン{
 6 静的INT nは、[] []、カウント[]。
7 8 public static void main(String [] args){
 9          Scanner sc = new Scanner(System.in);
10          n = sc.nextInt();
11          a = new int [22] [22 ];
12          カウント= 新しい整数 [25              
         ];
13          forint i = 1; i <= n; i ++ ){
 14              forint j = 1; j <= n; j ++ ){
 15                  a [i] [j] = sc.nextInt();
16              }
 17          }
 18              
19          forint i = 1; i <= n; i ++ ){
 20              forint j = 1; j <= n; j ++ ){
 21                  if(i!= j && a [i] [j] == 1 22                      count [j] ++ ;
23              }
 24          }
 25         forint j = 1; j <= n; j ++ 26              if(count [j]> = n / 2 27                  System.out.print(j + "" );
28      }
 29  30 }

 

まとめ

最初は混乱しましたが、どうすればいいのかわからなかったため、長い間シミュレーションを書いていましたが、結局はわかりませんでした。その後、他のビッグウィッグのブログを読みに行ったところ、引き出しの原則が使用されていることがわかりましたが、ここで使用できる理由がよくわかりませんでした。

つまり、1> 0の数であれば、このチップは良いと思います。すごい!次に、コードは上記のようになります。



おすすめ

転載: www.cnblogs.com/acm-cyz/p/12740326.html