1 条题解

  • 0
    @ 2025-4-7 21:28:48

    C :

    #include<stdio.h>
    int main()
    {
        int asd,dsa,a[111],b[111],i,j,t,n;
        scanf("%d%d",&asd,&dsa);
        n=asd+dsa;
        for(i=0;i<n;i++)
        {
            scanf("%d%d",&a[i],&b[i]);
        }
        for(i=0;i<n;i++)
        {
            for(j=i;j<n;j++)
            {
                if(a[j]<a[i])
                {
                    t=a[j];
                    a[j]=a[i];
                    a[i]=t;
                    t=b[j];
                    b[j]=b[i];
                    b[i]=t;
    
                }
            }
        }
            for(i=0;i<n;i++)
            {
                printf("%d %d\n",a[i],b[i]);
            }
            return 0;
    }
    
    

    C++ :

    #include <stdio.h>
    #include <stdlib.h>
    struct node {
    	int num, score;
    	struct node * next;
    };
    int main() {
    	struct node *heada, *taila, *headb, *tailb, *head, *tail, *p;
    	heada = taila = headb = tailb = NULL;
    	int n, m, i;
    	scanf("%d %d", &n, &m);
    	/* 读入a链表中的n个学生信息 */
    	for (i = 0;i < n;i++) {
    		p = (struct node *)malloc(sizeof(struct node));
    		scanf("%d %d", &p->num, &p->score);
    		if (heada == NULL) {
    			heada = taila = p;
    		} else {
    			taila->next = p;
    			taila = p;
    		}
    	}
    	taila->next = NULL;
    	/* 读入b链表中的m个学生信息 */
    	for (i = 0;i < m;i++) {
    		p = (struct node *)malloc(sizeof(struct node));
    		scanf("%d %d", &p->num, &p->score);
    		if (headb == NULL) {
    			headb = tailb = p;
    		} else {
    			tailb->next = p;
    			tailb = p;
    		}
    	}
    	tailb->next = NULL;
    	/* 合并两个链表 */
    	head = tail = NULL;
    	while (heada != NULL && headb != NULL) {
    		/* 令p指向当前a和b两个链表头中较小的一个 */
    		if (heada->num < headb->num) {
    			p = heada;
    			heada = heada->next;
    		} else {
    			p = headb;
    			headb = headb->next;
    		}
    		/* 将p指向的节点放到合并后的链表尾部 */
    		if (head == NULL) {
    			head = tail = p;
    		} else {
    			tail->next = p;
    			tail = p;
    		}
    	}
    	/* 将仍未合并完的链表合并 */
    	while (heada != NULL) {
    		if (head == NULL) {
    			head = tail = heada;
    		} else {
    			tail->next = heada;
    			tail = heada;
    		}
    		heada = heada->next;
    	}
    	while (headb != NULL) {
    		if (head == NULL) {
    			head = tail = headb;
    		} else {
    			tail->next = headb;
    			tail = headb;
    		}
    		headb = headb->next;
    	}
    	if (tail != NULL)
    		tail->next = NULL;
    	/* 将合并后的链表进行输出 */
    	p = head;
    	while (p != NULL) {
    		printf("%d %d\n", p->num, p->score);
    		p = p->next;
    	}
    	return 0;
    }
    
    

    Java :

    
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Scanner;
    
    public class Main {
       private static Scanner s = new Scanner(System.in) ;
       
       public static void main(String[] args) {
    	    int a = s.nextInt() ;
    	    int b = s.nextInt() ;
    	    if(a>=0&&a<=100&&b>=0&&b<=100){
    	    List<Student> A = new ArrayList<Student>() ;
    //	    List<Student> temp = new ArrayList<Student>() ;
    	    List<Student> B = new ArrayList<Student>() ;
    	    
    	    
    	    
    	    for (int i = 0; i < a; i++) {
    	    	Student stu = new Student() ;
    			int n = s.nextInt() ;
    			int m = s.nextInt() ;
    			
    				stu.num = n ;
    				stu.score = m ;
    				A.add(stu) ;
    			}
    	    
            for (int i = 0; i < b; i++) {
            	Student stu = new Student() ;
    			int n = s.nextInt() ;
    			int m = s.nextInt() ;
    				stu.num = n ;
    				stu.score = m ;
    				B.add(stu) ;
    			}
            
            A.addAll(B) ;
            
            Collections.sort(A);
            for (Student student : A) {
    			System.out.println(student.num+" "+student.score);
    		}
    //        for (Student student : A) {
    //			temp.add(student) ;
    //		}
    //        for (Student student : temp) {
    //			for (Student student2 : B) {
    //				if(student2.num==student.num){
    //					A.remove(student) ;
    //				}
    //			}
    //		}
    //        System.out.println(A.size());
    //        for (Student student : A) {
    //			System.out.println(student.num+" "+student.score);
    //		}
    }
    }
    	    }
    
    class Student implements Comparable{
    	int num ;
    	int score ;
    	@Override
    	public int compareTo(Object o) {
            Student s = (Student)o ;
            if(this.num>s.num)
            	return 1 ;
            else if(this.num==s.num)
    		return 0;
            else return -1 ;
    	}
    }
    
    
    • 1

    信息

    ID
    1387
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者