请问求和时候的下标是不是横纵坐标都包括?
追问不是,只是计算它是第几行就可以,只是纵坐标
追答我程序马上写完了,有测试数据么?
如果我的理解没问题的话,那么这道题,其实就是就是让,统计每行的0的个数,然后把0个数比较少的行放在前面,最多的行放在最后。(这样可以保证为0的那些数的纵坐标之和最小)
#include<stdio.h>
#define COLS 4
#define ROWS 19
int get_cost(int *a, int n){ //计算每行0的个数
int i,count = 0;
for(i = 0; i<n; i++){
if(a[i] == 0){
count++;
}
}
return 0;
}
int swap_array(int *a, int *b, int n){
int tmp, i;
for(i = 0; i<n; i++){
tmp = a[i];
a[i] = b[i];
b[i] = tmp;
}
}
void bubblesort_array(int (*list)[COLS],int len) //冒泡排序
{
int i,j;
int temp;
for(i=0;i<len - 1;i++)
for(j=0;j<len-i - 1;j++)
{
if(get_cost(list[j+1],COLS)<get_cost(list[j],COLS))
{
swap_array(list[j], list[j+1], COLS);
}
}
}
int main(){
int tar[ROWS][COLS] = {0};
int i,j;
//输入
for(i =0; i<ROWS -1; i++){
for(j = 0; j<COLS; j++){
scanf("%d", &tar[i][j]);
}
}
//排序
bubblesort_array(tar, ROWS-1);
//统计最后一行的和
for(i = 0; i<ROWS-1; j++){
for(j = 0; j<COLS; j++){
if(tar[i][j] == 0){
tar[ROWS-1][j]+=i;
}
}
}
for(i = 0; i<ROWS; i++){
for(j =0; j<COLS; j++){
printf("%d ", tar[i][j]);
}
printf("\n");
}
return 0;
}
追问有的。
0 -19 5 9
0 0 -20 -4
0 -40 57 6
0 0 -1 -6
0 0 -6 0.5
0 -20 25 0
0 0 -81 -6
数据太多提交不上去,还麻烦您回一下,我把下面的数据在输进去
追答好的
追问0 -33 16 11;0 -14 17 5 ;0 -1 -10 2.5 ;-16 1 -11 -11 ;16 195 66 -7 ;0 -11 -1.5 0 ;0 -58 -6.5 0 ;0 0 -10 0 ;0 0 -14 0;0 0 -14 0 ;0 0 -11 0
追答//之前的code有几个低级错误,已经修改过来了
#include<stdio.h>
#define COLS 4
#define ROWS 19
int get_cost(float *a, int n){
int i,count = 0;
for(i = 0; i<n; i++){
if(a[i] == 0.0){count++;}
}
return count;
}
void swap_array(float *a, float *b, int n){
float tmp;
int i;
for(i = 0; i<n; i++){
tmp = a[i];a[i] = b[i];b[i] = tmp;
}
}
void bubblesort_array(float (*list)[COLS],int len)
{
int i,j;
for(i=0;i<len - 1;i++)
for(j=0;j<len-i - 1;j++)
{
if(get_cost(list[j+1],COLS)>get_cost(list[j],COLS))
{
swap_array(list[j], list[j+1], COLS);
}
}
}
int main(){
float tar[ROWS][COLS] = {0};
int i,j,final_sum = 0
for(i =0; i<ROWS -1; i++){
for(j = 0; j<COLS; j++){
scanf("%f", &tar[i][j]);
}
}
bubblesort_array(tar, ROWS-1);
for(i = 0; i<ROWS-1; i++){
for(j = 0; j<COLS; j++){
if(tar[i][j] == 0){
tar[ROWS-1][j]+=i;
}
}
}
for(i = 0; i<ROWS; i++){
for(j =0; j<COLS; j++){
printf("%2.2f ", tar[i][j]);
}
printf("\n");
}
for(i = 0; i<COLS; i++){
final_sum += tar[ROWS-1][i];
}
printf("%d\n", final_sum);
return 0;
}
追问![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/c8177f3e6709c93df0ac00609c3df8dcd00054ce?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
这个怎么解决?是不是版本的原因呢?我用的是2008版。我应该怎么改,很着急,谢谢!
追答你创建的不是C或C++的工程,你创建的是C#的工程吧。看文件的后缀名是.cs?
追问错误 1 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”? c:\users\yan wu\documents\visual studio 2008\projects\bklyh\bklyh\bklyh.cpp 61 bklyh
恩,是的,我改成C++了,可是出了上个错误,您能再告诉我一下这是什么回事吗?
追答你创建的项目类型应该不是”win32 空项目“
追问![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/9f2f070828381f30891d0f3eaa014c086e06f025?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
我手动改成.c了,用了你的后面的代码,添加了源文件,可是还是有错。
追答字数超了,我私信给你
本回答被提问者采纳