目录
8022 201509-2 日期计算
8023 201403-2 窗口
8024 201409-3 字符串匹配
8025 201312-3 最大的矩形
8026 201512-2 消除类游戏
8027 201503-2 数字排序
8028 201703-2 学生排队
8029 201712-2 游戏
8030 201709-2 公共钥匙盒
8031 201803-2 碰撞的小球
9001 201409-2 画图
9002 201312-2 ISBN号码
9003 牛客在线编程 数串
9004 牛客在线编程 句子反转
9005 牛客在线编程 求数列的和
9006 牛客在线编程 统计字符
9007 牛客在线编程 进制转换
9008 201803-1 跳一跳
9012 牛客在线 拼凑面额
9013 牛客在线编程 整数加法
#include
using namespace std;
int main()
{
int y,d,i;
cin>>y>>d;
int Mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if((y%4==0&&y%100!=0)||(y%400==0)) Mon[2]=29;
for(i=1;i<13;i++)
{
if(d>Mon[i])
{
d-=Mon[i];
}
else break;
}
cout<
//方法1:基本的数组内的两行交换
//方法2:
#include
using namespace std;
struct Node{
int label,x1,y1,x2,y2;
};
struct Node node[11];// 这个,正确
//vector node; 如果是这个 程序输入进入死循环 原因我也不知道
int main()
{
int N,M,flag=0;
cin>>N>>M;
for(int i=1;i<=N;i++)
{
node[i].label=i;
cin>>node[i].x1>>node[i].y1>>node[i].x2>>node[i].y2;
}
while(M)
{
int x,y;
cin>>x>>y;
for(int i=N;i>=1;i--)
{
flag=0;
if((x>=node[i].x1&&x<=node[i].x2)&&(y>=node[i].y1&&y<=node[i].y2))
{
cout<
#include
#include
#include
using namespace std;
int main()
{
string s;
cin>>s;
int m,n;
cin>>m>>n;
string str[n], brr[n];
for(int i=0;i>str[i];
brr[i]=str[i];
}
for(int i=0;i
#include
using namespace std;
int main()
{
int n;
cin>>n;
int array[n];
for(int i=0;i>array[i];
}
int width=1,result=0,temp=0;
for(int i=0;i=array[i])width++;
else break;
}
for(int k=i-1;k>=0;k--)
{
if(array[k]>=array[i])width++;
else break;
}
temp=array[i]*width;
result=max(result,temp);
width=1;
//cout<
#include
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
//输入
int array[n][m],brray[n][m],temp[n][m];
for(int i=0;i>array[i][j];
brray[i][j]=array[i][j];
temp[i][j]=array[i][j];
}
}
//行的检测
for(int i=0;i
#include
using namespace std;
struct Node{
int a,b;
}brray[1001];
int main()
{
//输入
int n;
cin>>n;
int array[n],crray[1001];
memset(crray,0,sizeof(crray));
for(int i=0;i>array[i];
crray[array[i]]++;
}
//引入结构体数组
int j=0;
for(int i=0;i<1001;i++)
{
if(crray[i]!=0)
{
brray[j].a=i;
brray[j].b=crray[i];
j++;
}
}
//出现次数从大到小排序
for(int i=0;ibrray[k].a)
{
swap(brray[i],brray[k]);
}
}
}
//输出
for(int i=0;i
#include
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
vector V(n);//必须添加(n),对V的个数初始化
for(int i=0;i::iterator it;
while(m)//这里写m>0也是可以的
{
int p,q;
cin>>p>>q;
for(it=V.begin();it!=V.end();it++)
{
if(*it==p) break;
}
V.erase(it);
V.insert(it+q,p);
m--;
if(m==0) break;
}
//注意输出的最后一个字符后没有空格(实际提交后有空格也是case100)
//暂按没有空格来
for(int i=0;i
#include
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
int array[n];
for(int i=1;i<=n;i++)
{
array[i]=i;
}
int N=sizeof(array)/sizeof(int),temp=n;
if(k==1||n==1) cout<
#include
using namespace std;
class Action
{
public:
int room;//钥匙号
int time;//归还事件发生的时间
int type;// 0:还钥匙, 1:借钥匙
//构造函数(初始化列表)进行类的初始化
Action(int room_,int time_,int type_):room(room_),time(time_),type(type_){}
/*重载operator<函数 :先根据time从小到大排序,再:时间相等根据是否归还排序,再:前两个相等根据房间号排序*/
bool operator<(const Action &other) const
{
if(time>N>>K;
//创建Action类型的Vector数组
vector actions;
//钥匙的初始化排序
vector result(N+1);
for(int n=1;n<=N; n++) result[n] = n;
for(int k=0;k>room>>begin>>length;
actions.push_back(Action(room, begin, 1));//借钥匙
actions.push_back(Action(room, begin+length, 0));
}
/*************sort利用operator<重写函数进行排序 ******************/
sort(actions.begin(),actions.end());
/***********************取放操作**********************************/
for(int i=0;i
#include
using namespace std;
/*
1.首先进行排序 (结构体数组的排序)
2.结果的输出:不是根据change[i].id 的1-n的输出,而是根据其下边的1-n来输出
3.注意:arr数组作为中间介质,用来进行对象的比较。
*/
struct node{
int id;//排序后的下标
int no;//1标记正方向 右侧方向,0标记负方向
int num;
}change[102];
int main()
{
int n,L,t,arr[102],flag=0,temp=-1;
cin>>n>>L>>t;
//数据输入
for(int i=1;i<=n;i++)
{
cin>>arr[i];
change[i].id=i;
change[i].num=arr[i];
change[i].no=1;
}
//结构体数组排序
for(int i=1;ichange[j].num)
{
swap(change[i],change[j]);
}
}
}
//操作
for(int i=1;i<=t;i++)
{
for(int j=1;j<=n;j++)
{
//当没有与该元素相等的时候
if(change[j].num==L)
{
change[j].no=0;
change[j].num-=1;
}
else if(change[j].num==0)
{
change[j].no=1;
change[j].num+=1;
}
//当存在于该元素相等的时候
else
{
for(int k=1;k<=n;k++)
{
if(arr[j]!=arr[k])
{
flag=1;
}
else if(arr[j]==arr[k]&&j!=k)
{
flag=0;
temp=k;
break;
}
}
if(flag==1)
{
if(change[j].no==1) change[j].num+=1;
else if(change[j].no==0) change[j].num-=1;
}
else if(temp>j)
{
change[j].no=0;
change[j].num-=1;
}
else
{
change[j].no=1;
change[j].num+=1;
}
}
}
for(int p=1;p<=n;p++)
arr[p]=change[p].num;
}
//输出
int p=1;
while(p<=n)
{
for(int re=1;re<=n;re++)
{
if(change[re].id==p)
{
cout<
#include
using namespace std;
int main()
{
int n,result=0;
cin>>n;
int array[101][101];
memset(array,0,sizeof(array));
while(n!=0)
{
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(int i=x1;i
#include
#include
using namespace std;
int a[10];
int main()
{
string s;
cin >> s;
a[0] = s[0] - '0';
a[1] = s[2] - '0';
a[2] = s[3] - '0';
a[3] = s[4] - '0';
a[4] = s[6] - '0';
a[5] = s[7] - '0';
a[6] = s[8] - '0';
a[7] = s[9] - '0';
a[8] = s[10] - '0';
a[9] = s[12] - '0';
int sum = 0;
for (int i = 0, j = 1; i < 9; i++, j++)sum += a[i] * j;
int code = sum % 11;
char c = code == 10 ? 'X' : '0' + code;
if (s[12] == c)cout << "Right" << endl;
else{
s[12] = c;
cout << s << endl;
}
}
// FUNCTION SIGNATURE BEGINS, THIS FUNCTION IS REQUIRED
#include
using namespace std;
int main()
{
string str;
cin>>str;
int temp=1,sum=0;
for(int i=0;i
#include
using namespace std;
int main(){
int num,i,j;
cin>>num;
char data[101][5];
char tempa[7]={'\0'},tempb[7]={'\0'},temp[5]={'\0'};
memset(data,'\0',sizeof(data));
for(i=0;i>data[i];
}
for(i=0;i
#include
using namespace std;
int main()
{
string str;
getline(cin,str);
int i,j=str.length();
for(i=str.length()-1;i>0;i--)
{
string temp;
if(str[i]==' ')
{
temp=str.substr(i+1,j-1-i);
j=i;
cout<
#include
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
double sum=0;
double temp=n;
for(int i=0;i
#include
using namespace std;
int isLetter(char c)
{
return((c>='a'&&c<='z')||(c>='A'&&c<='Z'));
}
int main()
{
string str;
getline(cin,str);
int arr[1000];
memset(arr,0,sizeof(arr));
for(int i=0;i
#include
using namespace std;
int main()
{
int T;
cin>>T;
int num=T,sum=0;
//vector V;
//第一步:2~num-1 之间进制的转换 ,放入vector中 并求和
for(int i=2;i
#include
using namespace std;
/*
1.输入终止用 ctrl +D 控制,测试正确
2.依据输入的0位终止条件
*/
int main()
{
int arr[31],sum=0,x,j;
vector V;
while(cin>>x)
{
V.push_back(x);
}
for(int i=0;i
#include
#include
using namespace std;
int main()
{
int N;
char a[6]={1,5,10,20,50,100};
cin>>N;
vector d(N+1,0);
d[0]=1;
for(int i=0;i<6;i++)
for(int j=1;j<=N;j++)
if(j>=a[i])
{
//cout<<"*"<
代码比较繁琐,但是也是case是100了,有需要的改进的地方,在此就直接提交这个面向过程的代码,便于后期查看。
#include
using namespace std;
int main()
{
string S,S1,S2;
int flag=0;
//数据输入 并拆分
getline(cin,S);
for(int i=0;i'9')
{
flag=1;
break;
}
}
int D1,D2;
vector R;
if(flag)cout<<"error"<0;i--)
{
temp=temp/10+(S1[i]-'0')+(S2[i]-'0');
R.push_back(temp%10);
}
R.push_back((S1[0]-'0')+(S2[0]-'0')+temp/10);
}
else
{
//等两个字符串长度不一致时
if(D1cha-1;i--)
{
temp1=temp1/10+(S1[i]-'0')+(S2[i-cha]-'0');
R.push_back(temp1%10);
}
for(int j=cha-1;j>0;j--)
{
temp1=temp1/10+(S1[j]-'0');
R.push_back(temp1%10);
}
R.push_back((S1[0]-'0')+temp1/10);
}
//逆序输出
for(int i=R.size()-1;i>=0;i--)
cout<