前记:考虑到再过一个月就是蓝桥杯比赛了,而我报的是java组,所以最近写算法就用java写了。给自己定个国奖的目标吧,加油。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
问题描述
1 import java.util.Scanner; 2 public class Main { 3 public static int [][]array=new int [50001][21]; 4 public static void main(String[] args) { 5 Scanner scanner=new Scanner(System.in); 6 int n=scanner.nextInt(); 7 int m=scanner.nextInt(); 8 int array1[]=new int[50001]; 9 for (int i = 0; i <n; i++) { 10 array1[i]=0; 11 for(int j=0;j<m;j++) 12 { 13 array[i][j]=scanner.nextInt(); 14 } 15 for(int j=0;j<m;j++) 16 { 17 array1[i]+=array[i][j]*Math.pow(2, j); 18 } 19 } 20 int a1=(int) Math.pow(2, m)-1; 21 int sum=0; 22 for(int i=0;i<n-1;i++) 23 { 24 for(int j=i+1;j<n;j++) 25 { 26 if(array1[i]==(a1-array1[j])) { 27 sum++; 28 } 29 } 30 } 31 System.out.println(sum); 32 } 33 34 }
其实这个代码的复杂度已经很低了,但是在蓝桥杯官网上运行时发现超时,只能得到70分,但是写成c++却可以得到满分,这可能因为c++比java速度快的原因吧,希望能看到你们的更好的答案。
原文:https://www.cnblogs.com/henuliulei/p/10407582.html