2021/2/6CCF练习201909(C++)

201909-1
#include
using namespace std;

int main(){
int n,m;
cin>>n>>m;
int *a = new int[n];
for(int i=0;i<n;i++){
a[i] = new int[m+1];
}
int T = 0,k = 0,p = 0;
int max = p;
for(int i=0;i<n;i++)
for(int j=0;j<=m;j++){
cin>>a[i][j];
T+=a[i][j];
}
for(int i=0;i<n;i++){
p=0;
for(int j=1;j<=m;j++){
p-=a[i][j];
}
if(p>max){
max = p;
k = i+1;
}
}
p=max;
cout<<T<<" “<<k<<” "<<p<<endl;

return 0;

}
201909-2(非原创)!!!!!!
#include
using namespace std;
int N, m, T, D, E;//苹果棵数,疏果轮数,剩下苹果总数,发生苹果掉落的苹果树棵数,相邻连续三棵树发生苹果掉落情况的组数
int a, i, t[1001] = { 0 }, j, p;//a用于接收每次疏果数,i为树的编号,t数组用于记录每棵树是否有掉落,j为疏果操作轮数,p计算一棵树的剩余果数
void check(int t[])
{
for (int i = 1; i <= N-2; i++)
{
if (t[i] && t[i + 1] && t[i + 2])
E++;
}//前N-2棵树的相邻情况
if (t[N - 1] && t[N] && t[1])
E++;
//倒数第二棵+倒数第一棵+第一棵
if (t[N] && t[1] && t[2])
E++;
//倒数第一棵+第一棵+第二棵
}//判断是否连续三组都有掉落
int main()
{
cin >> N;
for (i = 1; i <= N; i++)
{
cin >> m;//接受第i棵树的操作轮数
for (j = 1; j <= m; j++)
{
cin >> a;//接收当前苹果个数或第j轮的疏果数
if (a > 0)
{
if (a < p)
{
t[i] = 1;
}
p = a;
}//判断是否有苹果掉落
//如果有掉落则t数组中该苹果树代表的位置变为一,表示有掉落
else
{
p += a;//计算前j轮操作后苹果数
}//没有掉落 则继续计算苹果数
}
T = T + p;//计算剩余苹果数
p = 0;//重置p
}
for (int i = 1; i <= N; i++)
{
if (t[i])
D++;
}
check(t);//计算相邻组数
cout << T << ’ ’ << D << ’ ’ << E << ’ ’ << endl;//输出数据
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40395925/article/details/113726803