版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/arthu6/article/details/84644466
3.1题 分蛋糕
思路简介:取一变量sum计每个小朋友的蛋糕重量,大于等于则计数器加一,小于则从蛋糕数组中继续往后取,直到蛋糕取完为止。
#include<iostream>
using namespace std;
int main()
{
int n,k,i;
int a[1005];
cin>>n>>k;
for(i=0;i<n;i++)
cin>>a[i];
int num=0,sum;
i=0;
while(i<n)
{
sum=0;//计重器清零
for(;i<n;i++)
{
sum+=a[i];
if(sum>=k) break;
}
num++;//计数器
i++;
}
cout<<num<<endl;
return 0;
}
截图:
3.2题:
学生排队
思路:先用函数得到要移动数字在数组的位置,再根据移动方向及大小移动数据,为正就将当前位置到目标位置段数组整体前移,为负就将当前位置到目标位置段数组整体后移,尤其要注意下标之间的对应关系。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int p[1005],q[1005];
int a[1005];
int Find(int b,int n)
{
int i;
for(i=0;i<n;i++)
{
if(a[i]==b) return i;
}
}
int main()
{
int n,m,i,k,j,t;
cin>>n>>m;
for(i=0;i<m;i++)
{
cin>>p[i]>>q[i];
}
for(i=0;i<n;i++)
{
a[i]=i+1;
}
for(i=0;i<m;i++)
{
j=Find(p[i],n);
t=a[j];
if(q[i]>=0)
{
for(k=j;k<j+q[i];k++)
{
a[k]=a[k+1];
}
a[k]=t;
}
if(q[i]<0)
{
for(k=j;k>j+q[i];k--)
{
a[k]=a[k-1];
}
a[k]=t;
}
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
12.2
游戏
思路:用队列模拟即可
代码:
#include<iostream>
#include<queue>
using namespace std;
int main()
{
int n,k,i,t,u;
queue<int> q;
cin>>n>>k;
for( i=1;i<=n;i++)
{
q.push(i);
}
t=1;u=1;
while(!q.empty())
{
u=q.front();//存放当前取得数字
q.pop();
if((t%k==0)||t%10==k);
else q.push(u);//不出队,重新跟着站好
t++;
}
cout<<u<<endl;
return 0;
}