1. 程式人生 > 其它 >202009-2 風險人群篩查

202009-2 風險人群篩查

技術標籤:C++c++

題目連結:http://118.190.20.162/view.page?gpid=T112
題目解答:
因為在這次這次程式碼中,我使用到了bool型別,其實也完全不需要,但是正好想到了就用一下,就當複習以下。

第一次解答

第一次解答,我自己感覺為啥問題(我也沒找出問題),樣例也是對的,但是系統測試就是0,也沒超時也沒超記憶體。
如果有大佬看見了希望可以解答一下,不勝感激

#include <iostream>
using namespace std;
struct people{
	int x[1000];
	int y[1000];
};
//只要逗留了,就一定經過 
int
main(){ int n;//n位居民,n組資料 int k;//連續 k個點在裡面就算是逗留了 int t;//一共t個時刻 int xl,yd,xr,yu;//高危區域座標 cin>>n>>k>>t>>xl>>yd>>xr>>yu; int pass=0;//經過的人數 int stay=0;//逗留的人數 people peo[n];//n組資料 int i,j;//用於迴圈的變數 bool sub[t]; int temp=0;//用於和k進行比較 for(i=0;i<n;i++){ //第一個都要進行提前判斷
cin>>peo[i].x[0]>>peo[i].y[0]; if(peo[i].x[0]<xr+1&&peo[i].x[0]>xl-1&&peo[i].y[0]<yu+1&&peo[i].y[0]>yd-1){ temp++; sub[0]=1;//1在高風險區域 } else{ sub[0]=0;//不在 } //開始後面的 for(j=1;j<t;j++){ cin>>peo[i].x[j]>>peo[i].y[j]; if(
peo[i].x[j]<xr+1&&peo[i].x[j]>xl-1&&peo[i].y[j]<yu+1&&peo[i].y[j]>yd-1) { if(sub[j-1]==1) temp++; //前一個也在 else temp=1;//前一個不在 ,當前就是第一個 sub[j]=1; } else {//當前如果不在這個區域裡面 sub[j]=0; } }//這個居民的這一波完成了,開始判斷他的情況 if(temp>k-1) stay++; if(temp>0) pass++; temp=0;//然後開始下一個又全部清零 } cout<<pass<<endl<<stay; return 0; }

這是我可憐的測試結果
在這裡插入圖片描述

第二次解答

我參照了一下網上的一些大佬的寫法。yysy他們真的又簡潔又易懂,這就是差距嗎。愛了愛了,然後我轉化成自己的理解寫了新的一個版本