首页 > 编程知识 正文

蓝桥杯java软件开发题目,蓝桥杯java和c哪个难

时间:2023-05-05 10:30:29 阅读:120690 作者:358

1 .众所周知,主题是n(2n20 )芯片,有好芯片和坏芯片,好芯片比坏芯片多。

每个芯片都可以用于测试其他芯片。 用好的芯片测试其他芯片时,可以正确给出被测试芯片是好是坏。 另一方面,用坏芯片测试其他芯片时,会随机给出好与坏的测试结果。 也就是说,这个结果与被测试芯片的实际好坏无关。

给出所有芯片的测试结果,问哪个芯片好。

输入

输入数据的第一行是整数n,表示芯片的数量。

从第2行至第n 1行为n*n的表,每行有n个数据。 表中的各数据为0或1,该n行中的第I行j列(1I,jn )的数据表示在第I个芯片上测试第j个芯片时得到的测试结果,1为好,0为差,i=j时一般为1 (表1 ) 不能测试芯片本身)。

输出功率

按从小到大的顺序输出所有好芯片的号码

样本输入

3

1 0 1

0 1 0

1 0 1

样本输出

1 3

2 .第一次写创意时,“用坏芯片测试其他芯片时,随机给出好与坏的测试结果。 也就是说,该结果与被测试芯片的实际好坏无关。 ”因为看不到这句关键话,所以不能用坏芯片测试好芯片。 我觉得写代码还很简单。 测试也不能只通过最后的情况。 代码如下。 想法参照评论,那个词是“坏芯片测试所有芯片是0”

当用publicstaticvoidtest (int [ ] [ ] arr )//好的芯片测试其他芯片时,可以正确给出被测试芯片是好是坏。 //,用坏芯片测试其他芯片时,随机有好有坏的测试结果为for(intI=0; i arr.length; I ) for(intj=0; j arr.length; j ) if(I==j ) ) {continue; (if ) arr[I][j]==0)/I测试j,然后立即进行j测试IIF(arr[j][I]==0) /此时表示第j行为不良芯片//j行全部为-1for k({ARR[j][k]=-1; }}}}}//最后,遍历整个二维数组。 如果该行中有1,则即使它是好的芯片for (inti=0); i arr.length; I ) for(intj=0; j arr.length; j ) if(I==j ) ) {continue; }elseif(ARR[I][j]==1) system.out.print ) I1 ' ); //i 1表示I是行数,输出的是第几个break; } }正确的解法:

当用publicstaticvoidtest (int [ ] [ ] arr )//好的芯片测试其他芯片时,可以正确给出被测试芯片是好是坏。 //用坏芯片测试其他芯片时,随机输出好坏测试结果的int record_1=0; //记录各行为0和1的个数的int record_0=0; for(intI=0; i arr.length; I ) for(intj=0; j arr.length; j ) (/好芯片互测一定是好芯片,但坏芯片互测情况if(I==j ) ) {continue; (if ) arr[I][j]==1arr[j][I]==1) ) /排除不良芯片相互测试的情况//此时,暂时判断I是好芯片,然后比较以下1和0的数量(/好k () if ) arr[I][k]==1) {record_1; }elseif(arr[I][k]==0) {record_0; }if(record_1record_0) system.out.print(I1 ' ); for(intn=0; n arr.length; n ) if(I==n ) {continue; (if ) arr[I][n]==0) (/n行表示不良芯片,此时,将测得的不良芯片全部保持为0,绝对患者for(intc=0; c arr.length; c () arr(n ) ) c )=0; }}}break; (else(/0小于1时,必须输入坏芯片for(inth=0; h arr.length; h () {arr[i][h]=0; }}} }record_1=0; 记得重新记录record_0=0; //还有点复杂,我从行出发,看网上的另一种解法,从列表里拿出来,先看所有芯片测试它的结果很简单

链接:链接

代码如下。 ((搬运) )。

import java.util.Scanner; 公共类主(publicstaticvoidmain (字符串[ ] args )扫描仪扫描=新扫描仪)系统. in ); int n=scanf.nextInt (; //芯片个数int[][] arr=new int[n][n]; for(intI=0; i n; I ()//输入芯片整体测试结果的for(intj=0; j n; j({ARR[I][j]=Scanf.nextint ); }}int temp=0; for(intj=0; j n; j ()//在循环中找到第一个好芯片int true=0int false=0; for(intI=0; i n; I ) if(I==j ) continue; elseif(arr[I][j]==0) False; elseTrue; (if ) true=false ) )//所有芯片对给定芯片的测试比对结果temp=j; 布雷克; }for(intI=0; i n; I ) (/以格式输出在该好芯片上获得的测试结果(arr[temp][I]==1) system.out.print ) I1 ' ); } }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。