回复 40楼 longlong89
确实是一个闲人, 呵呵。
天下皆醒,唯我独醉; 天下皆白,唯我独黑
。 #include <stdio.h> long a[1000][2]={0}; long sum; long min(long a,long b) { return a<b?a:b; } main() { long int i,j,n,x,y,t; LOOP: printf("请输入纸带数量:(输入0则退出)"); scanf("%ld",&n); /*输入纸带数量*/ if(n==0)exit(0); sum=1; printf("请输入纸带起点与终点:"); for(i=0;i<n;i++) /*分别输入n条纸带起点与终点*/ { scanf("%ld %ld",&a[i][0],&a[i][1]); } for(i=0;i<n;i++) /*保证纸带第一点小于第二点 */ if(a[i][0]>a[i][1]) { t=a[i][0]; a[i][0]=a[i][1]; a[i][1]=t; } for(i=0;i<n-1;i++) /*按照起点排序*/ for(j=n-2;j>=i;j--) if(a[j][0]>a[j+1][0]) { t=a[j][0]; a[j][0]=a[j+1][0]; a[j+1][0]=t; t=a[j][1]; a[j][1]=a[j+1][1]; a[j+1][1]=t; } x=a[0][0],y=a[0][1]; /*当前图钉所在纸带范围*/ for(i=1;i<n;i++) if(y<a[i][0]) x=a[i][0],y=a[i][1],sum++; /*纸带不相交情况要增加图钉*/ else /*纸带相交情况*/ { x=a[i][0]; /*当前图钉所在纸带范围为相交部分*/ y=min(a[i][1],y); } printf("%ld\n",sum); goto LOOP; }所有测试数据的结果
请输入纸带数量:(输入0则退出)2 请输入纸带起点与终点:41 467 334 500 1 请输入纸带数量:(输入0则退出)3 请输入纸带起点与终点:169 724 478 962 464 705 1 请输入纸带数量:(输入0则退出)4 请输入纸带起点与终点:145 281 827 961 491 995 942 942 2 请输入纸带数量:(输入0则退出)5 请输入纸带起点与终点:264 648 446 805 890 954 756 840 966 977 4 请输入纸带数量:(输入0则退出)6 请输入纸带起点与终点:306 673 386 745 924 986 290 636 355 767 655 941 2 请输入纸带数量:(输入0则退出)7 请输入纸带起点与终点:724 966 430 457 287 753 383 945 909 946 506 900 591 762 3 请输入纸带数量:(输入0则退出)8 请输入纸带起点与终点:655 836 374 596 21 348 199 668 484 734 53 999 418 938 900 935 4 请输入纸带数量:(输入0则退出)9 请输入纸带起点与终点:451 600 249 519 556 798 303 844 609 989 702 796 798 798 9 157 472 622 4 请输入纸带数量:(输入0则退出)10 请输入纸带起点与终点:538 657 958 998 322 651 21 699 557 892 389 712 600 869 861 932 169 721 189 976 3 请输入纸带数量:(输入0则退出)11 请输入纸带起点与终点:329 368 692 718 753 996 687 866 949 982 481 535 450 466 44 659 292 439 253 510 745 787 6 请输入纸带数量:(输入0则退出)12 请输入纸带起点与终点:905 958 391 625 477 824 334 874 372 833 70 487 297 518 177 773 270 763 668 985 102 480 213 627 2 请输入纸带数量:(输入0则退出)13 请输入纸带起点与终点:802 924 23 972 61 181 3 432 505 593 725 900 187 360 413 974 270 833 711 760 896 926 10 757 170 315 5 请输入纸带数量:(输入0则退出)14 请输入纸带起点与终点:576 758 164 882 86 565 487 577 474 625 627 629 928 962 123 596 737 771 411 547 153 520 790 924 188 763 940 958 5 请输入纸带数量:(输入0则退出)15 请输入纸带起点与终点:578 760 357 477 108 113 887 993 384 405 540 704 835 869 361 896 22 617 112 717 696 932 296 855 53 962 584 734 654 972 5 请输入纸带数量:(输入0则退出)16 请输入纸带起点与终点:457 532 963 993 176 705 962 990 145 353 314 651 740 759 192 605 264 503 829 997 549 556 561 627 467 541 129 240 813 992 824 970 6 请输入纸带数量:(输入0则退出)17 请输入纸带起点与终点:287 847 604 663 706 913 591 704 818 975 539 584 648 971 864 913 75 545 712 769 262 519 985 994 256 652 936 948 282 653 674 923 831 878 7 请输入纸带数量:(输入0则退出)18 请输入纸带起点与终点:259 619 971 971 264 555 815 954 85 710 484 774 380 815 951 977 132 956 689 941 790 885 974 996 152 345 708 712 131 439 958 995 52 269 479 918 5 请输入纸带数量:(输入0则退出)19 请输入纸带起点与终点:866 925 647 807 98 830 292 600 278 799 352 448 882 897 828 851 816 925 658 940 560 655 675 792 361 754 398 714 946 962 161 524 549 923 350 925 910 949 6 请输入纸带数量:(输入0则退出):