對拍程序c++

對拍就是你給兩個程序和一個隨機數據生成器,然後系統用隨機數據生成器的輸出數據作爲你這兩個程序的輸入,比較這兩個程序的輸出,找到這兩個程序輸出不一樣的一組數據。

data.exe是數據生成程序

test.exe是你需要檢查的程序

AC.exe是正確的程序

這三個程序需要放在同一目錄下,執行以下對拍程序即可

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{   long s,t;
    while(1){
        system("cls");
        do{
            system("data.exe > data.txt"); //data.exe是數據生成程序
            s=clock();
            system("test.exe < data.txt > try2.out");  //test.exe是你需要檢查的程序
            t=clock();
            system("AC.exe < data.txt > try1.out");  //AC.exe是正確的程序
            if(system("fc try1.out try2.out > nul")) break;
            else printf("AC time: %ldms\n",t-s); //並輸出運行時間
        }while(1);
        printf("WA time: %ldms\n",t-s);  //運行時間
        system("fc try1.out try2.out");
        system("pause>nul");
    }
    return 0;
}

data.cpp舉例,用於隨機生成樣例

#include<stdio.h>
#include<time.h>
#include<windows.h>

int main()
{
    srand(time(NULL));//隨機種子
    int n=rand()%100;//生成100以內的n,m
    int m=rand()%100;
    printf("%d %d\n",n,m);
    for(int i=0;i<n;i++)
        printf("%d ",rand()%100);
    puts("");
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章