1.《打工传说:开篇》(难度C)
/*有一个大学准备购买一块地皮修建新的宿舍楼,但是这块地皮由于建筑需要被分成了n*n块,每一块的修建成本不同。
其中,矩阵的副对角线,最后一列,最后一行为备用宿舍,其余的将用为主宿舍。现在校方想知道修建主宿舍需要多少成本。*/
输入格式:
输入第一行给出正整数n(1<n≤10);
随后n行,每行给出n个整数(表示该块地的成本),其间以空格分隔。
输出格式:
修建主宿舍楼的成本。
输入样例:
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
输出样例:
35
思路:重点是如何判断元素是否处于副对角线上。经过观察,在副对角线上的元素(x,y)
均满足x+y等于3,即是n-1.当然我这里是把副对角线上的元素变为0然后遍历数组相加,也可直接跳过计数。
代码:
#include<stdio.h>
int main()
{ int n;
scanf("%d",&n);
int arr[n][n] = {};
for(int i = 0;i<n;i++)
{
for(int j= 0;j<n;j++)
{
scanf("%d",&arr[i][j]);
}
}
int sum = 0;
for(int a = 0;a<n-1;a++)//不计最后一行
{
for(int b= 0;b<n-1;b++)//不计最后一列
{
if(a+b == n-1)//查副对角线
{
arr[a][b] = 0;
}
sum = sum + arr[a][b];
}
}
printf("%d",sum);
return 0;
}