201912-1 报数
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
using namespace std;
int isHave(int n);
int main(int argc, char** argv) {
int n;
cin>>n;
int count=1; // 报数次数
int a[4]={0}; // 存放每个人跳过次数
int num=1; // 报数
int index=0;
while(count<=n){
// 跳过
if(num%7==0||isHave(num)==1){
a[index]++;
count--; // 不计入报数次数
}
num++;
index++;
count++;
if(index%4==0) index=0; // 一轮结束
}
for(int i=0;i<4;i++){
cout<<a[i]<<endl;
}
return 0;
}
int isHave(int n){
while(n>0){
if(n%10==7){
return 1;
}
n=n/10;
}
return 0;
}
201912-2 回收站选址
知识点:二维map和struct运用!!
#include<iostream>
#include<stack>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
struct Position{
int x;
int y;
};
int main()
{
int s[5]={0};
int n;
cin>>n;
map<int,map<int,int> >mp;
Position p[n];
// 存放得分
int score[5]={0};
for(int i=0;i<n;i++){
cin>>p[i].x>>p[i].y;
mp[p[i].x][p[i].y]=1; //此坐标有垃圾
}
//可能存在
if(n>=5){
int count;
for(int i=0;i<n;i++){
count=0;
// 上下左右都有垃圾
if(mp[p[i].x][p[i].y-1]==1&&mp[p[i].x][p[i].y+1]==1&&mp[p[i].x-1][p[i].y]==1&&mp[p[i].x+1][p[i].y]==1){
// 左下角
if(mp[p[i].x-1][p[i].y-1]==1) count++;
// 左上角
if(mp[p[i].x-1][p[i].y+1]==1) count++;
// 右上角
if(mp[p[i].x+1][p[i].y+1]==1) count++;
// 右下角
if(mp[p[i].x+1][p[i].y-1]==1) count++;
// 候选才能得分
score[count]++;
}
}
}
//输出
for(int i=0;i<5;i++){
cout<<score[i]<<endl;
}
return 0;
}