程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 3318 - Matrix Multiplication 第一次用隨機化解決問題...

POJ 3318 - Matrix Multiplication 第一次用隨機化解決問題...

編輯:C++入門知識

 隨機化還是很厲害的...印象最深的是以前手寫快排~~一般加個隨機化會使耗時不受輸入數據的..時間更加穩定

     這個題是人品題了...開始交了好多遍都過不了..多交幾次終於過了...

 


Program:

 #include<iostream>   
#include<stack>   
#include<queue>   
#include<stdio.h>   
#include<algorithm>   
#include<string.h>   
#include<time.h>   
#include<cmath>   
#define ll long long   
#define oo 1000000007   
#define MAXN 505   
using namespace std;   
int n,M[3][MAXN][MAXN];  
bool judge()  
{  
      int t,i,j,x,y,p,d;   
      for (t=1;t<=60000;t++)  
      {   
             y=rand()%n;  
             x=rand()%n;  
             d=0;  
             for (p=0;p<n;p++)  
                d+=M[0][y][p]*M[1][p][x];  
             if (d!=M[2][y][x]) return false;  
      }  
      return true;  
}   
int main()  
{  
      int i,j,x;   
      scanf("%d",&n);  
      for (x=0;x<3;x++)  
         for (i=0;i<n;i++)  
           for (j=0;j<n;j++)  
              scanf("%d",&M[x][i][j]);  
      srand((unsigned)time(NULL));  
      if (judge()) printf("YES\n");  
             else  printf("NO\n");  
      return 0;  
}  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved