日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[蓝桥杯][基础练习VIP]芯片测试-思维

發布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [蓝桥杯][基础练习VIP]芯片测试-思维 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述
有n塊芯片,有好有壞,已知好芯片比壞芯片多。

每個芯片都能用來測試其他芯片。用好芯片測試其他芯片時,能正確給出被測試芯片是好還是壞。而用壞芯片測試其他芯片時,會隨機給出好或是壞的測試結果(即此結果與被測試芯片實際的好壞無關)。

給出所有芯片的測試結果,問哪些芯片是好芯片。
輸入
輸入數據第一行為一個整數n,表示芯片個數。

第二行到第n+1行為n*n的一張表,每行n個數據。表中的每個數據為0或1,在這n行中的第i行第j列(1≤i, j≤n)的數據表示用第i塊芯片測試第j塊芯片時得到的測試結果,1表示好,0表示壞,i=j時一律為1(并不表示該芯片對本身的測試結果。芯片不能對本 身進行測試)。

(2≤n≤20)
輸出
按從小到大的順序輸出所有好芯片的編號
樣例輸入

3
1 0 1
0 1 0
1 0 1

樣例輸出

1 3

解題思路:
首先將測試結果表中的數據的可以判定為無效的數據進行甚至為INF
  對于一個芯片的測試結果,如果有效的數據中1的個數num1大于0的個數num0,那么說明這芯片是正常的芯片,那么這個芯片的所有測試結果就是正確的。
  如果num0<num1,則這個芯片是壞的,將這個芯片的測試數據都舍棄掉,設置為INF

思路鏈接:
https://www.cnblogs.com/zuimeiyujianni/p/8933133.html

代碼如下:

#include <iostream> using namespace std; int INF = 0xfffffff; bool Find; const int N = 21; int a[N][N]; int n;int main() {cin >> n;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) {cin >> a[i][j];if ( i == j)a[i][j] = INF;}int k = 1;while (!Find) {int num1 = 0, num0 = 0;for (int i = 1; i <= n; i++) {if (a[i][k] == 1)num1++;else if (a[i][k] == 0)num0++;} // 找到了正常芯片,由正常芯片測試的結果一定是正確的if (num1 > num0) {Find = 1;for (int i = 1; i <= n; i++) {if (a[k][i] == 1 || k == i)cout << i << " ";}//這里不能寫else,因為num1==num0的情況我們無法判斷} else if (num1 < num0) {for (int i = 1; i <= n; i++) {a[k][i] = INF;}}k++;if (k == n + 1)k = 1;}return 0; }

總結

以上是生活随笔為你收集整理的[蓝桥杯][基础练习VIP]芯片测试-思维的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。