广州营销网站建设设计,青建设厅官方网站,中国城乡建设网,如何做积分商城网站题目链接
code
#includebits/stdc.h
using namespace std;struct node{int indx;//用来存储数组下标int cnt;//用来计数
};bool cmp(node a,node b){ //判断是否是数字最大的一个就是经过最多谈话人的道return a.cntb.cnt;
}
node row[2010],cow[2010];bool cmp… 题目链接
code
#includebits/stdc.h
using namespace std;struct node{int indx;//用来存储数组下标int cnt;//用来计数
};bool cmp(node a,node b){ //判断是否是数字最大的一个就是经过最多谈话人的道return a.cntb.cnt;
}
node row[2010],cow[2010];bool cmp2(node a,node b){return a.indxb.indx;//判断是否为下标最小的
}int main(){int M,N,K,L,D;int O0,I0;cinMNKLD;for(int i0;iN;i){cow[i].indxi;//将下标记录}for(int i0;iM;i){row[i].indxi;}for(int i0;iD;i){int x,y,p,q;cinxypq;//输入点if(yq){row[min(x,p)].cnt; //如果同 row}if(xp){cow[min(y,q)].cnt; //如果同cow}}sort(cow,cowN1,cmp); //排序sort(row,rowM1,cmp);sort(row,rowK,cmp2); //对下标排序否则只有%10因为要输出下标最小而且穿过人最多的道的位置sort(cow,cowL,cmp2);for(int i0;iK;i){coutrow[i].indx ; //输出y}cout\n;for(int i0;iL;i){coutcow[i].indx ; //输出x}
}下面我对其进行详细讲: 这个C程序是一个非常特定的问题的解决方案。代码逻辑主要涉及一些数组操作和排序下面我会逐步解释代码的各个部分。 结构体 node: indx用于存储数组的索引。cnt用于计数。这个结构体似乎被用来跟踪行和列的状态。 函数 cmp(node a, node b): 这是一个比较函数用于比较两个 node 对象的 cnt 字段。如果 a.cnt 大于 b.cnt则返回 true。这个函数在后面的排序操作中用到似乎是为了根据某个“计数”来对数组进行排序。 数组 row 和 cow: 这两个数组存储了2010个 node 对象分别命名为 row[i] 和 cow[i]。它们被初始化为它们的索引值即 i。 函数 cmp2(node a, node b): 这是另一个比较函数用于比较两个 node 对象的 indx 字段。如果 a.indx 小于 b.indx则返回 true。这个函数在后面的排序操作中用到似乎是为了根据某个“索引”来对数组进行排序。 主函数 main(): 首先输入五个整数M, N, K, L, D。然后对 cow 和 row 数组进行初始化将它们的索引值设为它们各自的索引。接着进行 D 次循环每次循环读取四个整数 x, y, p, q。如果 y 和 q 相等或者 x 和 p 相等那么对应的计数就会增加。然后对 cow 和 row 数组按照前面提到的比较函数进行排序。接着对 row 数组的前 K 个元素和 cow 数组的前 L 个元素进行索引排序由 cmp2 比较函数决定。最后输出排序后的 row 和 cow 数组的前 K 和 L 个元素的索引。