编程疑难杂症

    xiaoxiao2025-01-25  4

     1 排序字符串,按 字符与 'U'的距离

    #include <iostream> #include <cstdlib> #include <cstdio> #include <vector> #include <cstring> #include <cmath> #include <algorithm> #include <queue> using namespace std; const int N = 10005; char s[N]; struct PP { int p; int v; int flag; }a[N]; bool cmp(PP x,PP y) { if(x.v == y.v) { return x.p < y.p; } else{ return x.v < y.v; } } int main() { freopen("in.txt","r",stdin); while(scanf("%s",s) != EOF) { int l = strlen(s); int i; for(i = 0;i < l;i++) { a[i].p = i; if(s[i] < 'U') { a[i].v = 'U' - s[i]; a[i].flag = -1; } else{ a[i].v = s[i] - 'U'; a[i].flag = 1; } } sort(a,a + l,cmp); for(i = 0;i < l;i++) { if(a[i].flag == -1) { printf("%c",'U' - a[i].v); } else{ printf("%c",'U' + a[i].v); } } printf("\n"); } return 0; } 2 求某个时间的下一秒

    #include <iostream> #include <cstdlib> #include <cstdio> #include <vector> #include <cstring> #include <cmath> #include <algorithm> #include <queue> using namespace std; const int N = 10005; struct date { int year; int month; int day; int hour; int mi; int sec; }now,nt; int m[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int isrun(int y) { if(y % 400 == 0) return 1; if(y % 100 == 0) return 0; if(y % 4 == 0) return 1; return 0; } void fun() { int flag = isrun(nt.year); if(flag == 1) { m[2] = 29; } else{ m[2] = 28; } if(nt.day > m[ nt.month ]) { nt.day = 1; nt.month++; if(nt.month == 13) { nt.month = 1; nt.year++; } } } int main() { freopen("in.txt","r",stdin); while(scanf("%d/%d/%d %d:%d:%d",&now.year,&now.month,&now.day,&now.hour,&now.mi,&now.sec) != EOF) { nt = now; nt.sec ++; if(nt.sec == 60) { nt.sec = 0; nt.mi++; if(nt.mi == 60) { nt.mi = 0; nt.hour++; if(nt.hour == 24) { nt.hour = 0; nt.day++; fun(); } } } printf("%04d/%02d/%02d %02d:%02d:%02d\n",nt.year,nt.month,nt.day,nt.hour,nt.mi,nt.sec); } return 0; } 3 求一个数组的最大 和 次大值

    #include <cstdio> #include <string> #include <cstring> #include <iostream> #include <algorithm> #include <stack> #include <cctype> #include <vector> #include <cmath> #include <map> #include <queue> #define ll long long #define eps 1e-8 #define N 1005 #define inf 0x7fffffff using namespace std; struct shangpin { char name[5]; int value; int cou; }S[5]; struct money { int v; int cou; }M[7]; int total; void ini() { //S[1].name == "A1"; S[1].value = 2;S[1].cou = 5; //S[2].name == "A2"; S[2].value = 3;S[2].cou = 10; //S[3].name == "A3"; S[3].value = 4;S[3].cou = 14; M[1].v = 1;M[1].cou = 5; M[2].v = 2;M[2].cou = 5; M[5].v = 5;M[5].cou = 3; total = 0; } void out() { printf("A1 %d,A2 %d,A3 %d;",S[1].cou,S[2].cou,S[3].cou); printf("1 %d,2 %d,5 %d\n",M[1].cou,M[2].cou,M[5].cou); } void change() { int c5,c2,c1; c5 = total / 5; if(M[5].cou >= c5) { M[5].cou -= c5; total -= c5 * 5; } else{ total -= M[5].cou * 5; M[5].cou = 0; } c2 = total / 2; if(M[2].cou >= c2) { M[2].cou -= c2; total -= c2 * 2; } else{ total -= M[2].cou * 2; M[2].cou = 0; } M[1].cou -= total; } int main() { //freopen("in.txt","r",stdin); ini(); //out(); char s[3]; int mm; int nn; //scanf("%d",&T); //for(int ccnt=1;ccnt<=T;ccnt++){ while(scanf("%s",s) != EOF){ //printf("%s\n",s); if(s[0] == 'p') { scanf("%d,",&mm); total += mm; if(mm == 1) { M[1].cou++; } else if(mm == 2){ M[2].cou++; } else{ M[5].cou++; } } else{ getchar(); scanf("A%d,",&nn); //printf(" nn = %d\n",nn); //getchar(); if(nn == 1) { S[1].cou--; total -= S[1].value; } else if(nn == 2) { S[2].cou--; total -= S[2].value; } else{ S[3].cou--; total -= S[3].value; } } } change(); out(); return 0; }  某个bfs,已经记不得了

    #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <stack> #include <cctype> #include <vector> #include <cmath> #include <map> #include <queue> #define ll long long #define eps 1e-8 #define N 100005 #define inf 0x7fffffff using namespace std; vector<int> a; int ma1,ma2; char s[N]; void ini() { a.clear(); ma1 = ma2 = 0; } bool cmp(int x,int y) { return x > y; } void solve() { sort(a.begin(),a.end(),cmp); int sz = a.size(); if(sz >= 1) { ma1 = a[0]; ma2 = a[0]; } if(sz >= 2) { ma2 = a[1]; } printf("%d,%d\n",ma1,ma2); } int main() { //freopen("in.txt","r",stdin); //scanf("%d",&T); //for(int ccnt=1;ccnt<=T;ccnt++){ ini(); int x; while(scanf("%d",&x) != EOF){ getchar(); a.push_back(x); } solve(); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1295744.html
    最新回复(0)