C2 제4 차 숙제 문제 풀이 보고서

2860 단어 숙제.
문 제 를 본 후에 만약 그래도 쓸모 가 있다 고 생각한다 면,제 가 있 는 팀 의 블 로그 방 문 량 을 좀 늘 려 주세요.
http://www.cnblogs.com/newbe/
http://www.cnblogs.com/newbe/p/4069834.html
http://www.cnblogs.com/newbe/p/4072005.html
제발 축하 해!!!
http://www.cnblogs.com/newbe/p/4058097.html
부 드 러 운 선생님 은 너무 독 하 셔 서 같은 수업 에 목숨 이 다른 우 리 를 불 쌍 히 여 겨 주세요~문장 말미 의 추천 같은 것 을 주문 하 세 요.답장 같은 것 이 있 으 면 더 좋 을 것 같 아 요!
 
1.다항식 연산
할 말 이 없습니다.어 려 운 점 은 주로 읽 기 부분 에 있 습 니 다.사실은 간단 한 시 뮬 레이 션 입 니 다.sscanf 를 사용 하여 문자열 에서 읽 기 를 포맷 할 수 있 습 니 다.각 항목 의 종 류 는%dx%d 입 니 다."x%d;%dx;x;%d;잘 판단 해 주세요.+-번호 같은 거 는 OK.
2.정렬 선택
흔히 말 하 는 문제,n 은 9 밖 에 안 되 는데 단순히 깊이 검색 하면 됩 니 다.vis[]기록 이 이미 나 타 났 는 지,res[]기록 은 각각 몇 명 입 니까?도대체 출력 을 찾 습 니 다.
3.배수 구하 기
네 번 째 상대 적 으로 기술적 함량 이 있 는 문 제 는 답 이 500 명 이 므 로 템 플 릿 세트 폭력 으로 해결 할 수 없다.
사실 1<=N<=4999 에서 알 수 있 듯 이 이것 은 구조 문제 로 지 정 된 digit 로 N 의 배수 수 를 구성 하 는 것 이다.
구조 과정 에서%N 이 0 이 아 닌 상황 이 발생 할 수 있 습 니 다.그러면 특정한 구조 에서 그의%N 이 x 라 고 가정 합 니 다!=0.그러면 이 숫자 에서 아래로 구 조 를 계속 할 때 뒷 자리 가 Y 라 고 가정 하면 새로운 숫자%N=(x*10+y)%N
그러면 알 수 있 듯 이 우 리 는%N 의 나머지 로 시간 복잡 도 를 제한 할 수 있 습 니 다.주어진 나머지 가 같은 x 의 다른 숫자 이기 때문에 뒤로 계속 구 조 를 할 때 발생 하 는 수의 나머지 서열 은 똑 같 고 중복 되 는 작업 을 한 것 과 같 습 니 다.그러면 우 리 는 다음 구조 가 나 온 나머지 가 이전에 나타 나 지 않 았 다 는 것 을 확보 하면 광 수 를 이용 하여 이 문 제 를 해결 할 수 있 습 니 다.
4.중복 수 전체 배열
처음에는 상투적인 문제 라 고 생각 했 지만 too young 으로 인해 문자열 의 길 이 는 100 보다 작 았 다.
시간 초과 코드 를 붙 여 주세요.짧 은 배열 만 해결 할 수 있 습 니 다.
#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

#define RD(x) scanf("%d",&x)

#define RD2(x,y) scanf("%d%d",&x,&y)

#define clr0(x) memset(x,0,sizeof(x))

typedef long long LL;

int n,vis[1005];

char s[1005],ans[1005];

void dfs(int now){

	int i;

	if(now == n){

        ans[now] = '\0';

		puts(ans);

		return;

	}

	int pre=-1;



    for(i=0;i<n;++i)

    {

        if(!vis[i] && s[i]!=pre)

        {

            vis[i]=1;

            ans[now]=s[i];

            pre=s[i];

            dfs(now+1);

            vis[i]=0;

        }

    }

}

void work()

{

    scanf("%s",s);

    n = strlen(s);

    clr0(vis);

    dfs(0);

}

int main()

{

	work();

	return 0;

}


  
사실 해결 하기 어렵 지 않 습 니 다.맵 을 열 어 26 글자 에 해당 하 는 개 수 를 기록 하면 dfs 전에 해당 하 는 문자 가 있 는 지 확인 하고 cnt-,dfs 완료 후+돌아 오 면 됩 니 다.
 
5.행렬 곱셈 A
또 이런 이상 한 입력 문 제 는 중간 에 빈 줄 이 있 기 때문에 어 려 운 점 이 없 기 때문에 sscanf 로 쉽게 해결 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기