题解 | #合并表记录#

合并表记录

http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

思路:
(1)n最大是500,故,准备 index[500]={0},value[500]={0},n 。 输入数据
(2) 对 index[0] -  index[n-1] 进行由小到大排序,value[0] - value[n-1] 做相同移动
(3) 遍历 index [ 0 ]到 index [n-1] 。
         for(i=0;i<n;i++)  
               for(j=i+1;j<n+1;j++)       // 不要忘记 index[ n-1 ] 要和 index[ n ]比较。
          sum=value[i]
          若 index[i] 和 index[i+1]   index[i+2] …  index[i+j] 相等,sum=sum + value[i+1] + value[i+2] + … + value[i+j] 
          当 index[i] 不等于 index[j]  时,输出 index[ j-1] 和 sum 。跳出 j 循环。进入 i  循环。
          下一个 i 循环 从 新一组 index 元素开始。 
程序:
# include <stdio.h>
# define N 11111111
int main ()
{
    int index[500]={0},value[500]={0},n;
    while(scanf("%d",&n)>0)
    {
        int i;
        for(i=0;i<n;i++)
            scanf("%d %d",&index[i],&value[i]);
        //从小到大对index排序,value一起移动
        int bigger_index=0,suixing_value=0,j;
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(index[j]<index[i])
                {
                    //交换位置
                    bigger_index=index[i];
                    index[i]=index[j];
                    index[j]=bigger_index;
                    //value交换相同的位置
                    suixing_value=value[i];
                    value[i]=value[j];
                    value[j]= suixing_value;
                }
            }
        }
        //遍历index[0]到index[n-1].若index[i]和index[i+1]相等,sum=value[i]+value[i+1].然后输出i和sum
        int sum=0;
        for(i=0;i<n;i++)
        {
            sum=value[i];
            for(j=i+1;j<n+1;j++)
            {
                if(index[i]==index[j])
                 sum=sum+value[j];   
                else
                {
                    printf("%d %d\n",index[j-1],sum);
                    break;
                } 
            }
            i=j-1; // 下一个 i 循环 从 新一组 index 元素开始。 
        }
    }
}

全部评论

相关推荐

头像
10-22 19:18
上海大学 后端
jopajhhdjwnqk:水印都叠杀人书了
点赞 评论 收藏
分享
totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
1 2 评论
分享
牛客网
牛客企业服务