1074 reverse list
AC 코드
#include <vector>
#include <map>
#include <algorithm>
#include <cstdio>
using namespace std;
class node{
public:
int addr;
int v;
int next;
};
int main(){
int h,n,k;
scanf("%d %d %d",&h,&n,&k);
vector<node> list;
map<int,node> rec;
for(int i = 0;i < n;i++){
node tmp;
scanf("%d %d %d",&tmp.addr,&tmp.v,&tmp.next);
rec[tmp.addr] = tmp;
}
int addr(h);
int count(0);
while(addr != -1){
list.push_back(rec[addr]);
addr = rec[addr].next;
}
n = list.size();
if(n < k){
for(int i = 0;i < list.size();i++){
if(list[i].next != -1)
printf("%05d %d %05d
",list[i].addr,list[i].v,list[i].next);
else
printf("%05d %d -1
",list[i].addr,list[i].v);
}
return 0;
}
for(int i = 0;i < n / k;i++){
reverse(list.begin() + i * k,list.begin() + (i+1) * k);
for(int j = i * k;j < (i+1) * k;j++){
if(j != (i+1) * k - 1)
list[j].next = list[j+1].addr;
}
}
for(int i = 0;i < n / k;i++){
if((i+1) * k < n)
list[i * k + k - 1].next = list[(i+1) * k].addr;
else
list[i * k + k - 1].next = -1;
}
list.back().next = -1;
for(int i = 0;i < list.size();i++){
if(list[i].next != -1)
printf("%05d %d %05d
",list[i].addr,list[i].v,list[i].next);
else
printf("%05d %d -1
",list[i].addr,list[i].v);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.