Untitled
unknown
plain_text
a year ago
14 kB
11
Indexable
// cay nhi phan ly tuong
/*
#include <bits/stdc++.h>
using namespace std;
struct treenode
{
int data;
treenode* left;
treenode* right;
treenode(int data):data(data),left(NULL),right(NULL){};
};
void insert(treenode*& root,int data)
{
if(!root)
{
root=new treenode(data);
}
else{
if(data<root->data)
{
insert(root->left,data);
}
else{
insert(root->right,data);
}
}
}
bool isspecial(treenode* node,int level,int leaflevel)
{
if(!node)
return true;
if(node->left==NULL && node->right==NULL)
{
if(leaflevel==-1){
leaflevel=level;
return true;
}
return (level==leaflevel);
}
if(node->left==NULL || node->right==NULL)
return false;
return isspecial(node->left,level+1,leaflevel)&&
isspecial(node->right,level+1,leaflevel);
}
bool hehe(treenode* root)
{
if(root==nullptr)
return true;
int leaflevel=-1;
return isspecial(root,0,leaflevel);
}
int main()
{
treenode* root=NULL;
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
insert(root,x);
}
if(hehe(root))
cout<<"Yes";
else cout<<"No";
}
*/
//diem gan goc toan do
/*
#include <bits/stdc++.h>
using namespace std;
struct node
{
int x,y;
node* next;
node(int x,int y):x(x),y(y),next(nullptr){};
};
node* insertbruh(node* head,int x,int y)
{
node* we=new node(x,y);
if(head==nullptr||(head->x*head->x+head->y*head->y)>(we->x*we->x+we->y*we->y)||(head->x*head->x+head->y*head->y)==(we->x*we->x+we->y*we->y)&&(head->x>we->x))
{
we->next=head;
return we;
}
node* temp=head;
while(temp->next!=nullptr){
if((temp->next->x*temp->next->x+temp->next->y*temp->next->y)<(we->x*we->x+we->y*we->y))
{
temp=temp->next;
}
else if((temp->next->x*temp->next->x+temp->next->y*temp->next->y)==(we->x*we->x+we->y*we->y)&&(temp->next->x<we->x))
{
temp=temp->next;
}
}
we->next=temp->next;
temp->next=we;
return head;
}
void print(node* head)
{
node* bru=head;
while(bru)
{
cout<<bru->x<<" "<<bru->y<<endl;
bru=bru->next;
}
}
int main()
{
int n;
cin>>n;
node* head=nullptr;
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
head=insertbruh(head,x,y);//mistake;
}
print(head);
}
*/
//
/*
#include <bits/stdc++.h>
using namespace std;
struct node
{
int x,y,z;
node* next;
node(int x,int y,int z):x(x),y(y),z(z),next(nullptr){};
};
node* insert(node*& head,int x,int y,int z)
{
node* newnode=new node(x,y,z);
if(head==nullptr)
{
newnode->next=head;
return newnode;
}
node*temp=head;
while(temp->next!=nullptr)
{
temp=temp->next;
}
temp->next=newnode;
return head;
}
int vitriphathien(node* head,int x,int y, int z)
{
int value=0;
node* temp=head;
while(temp)
{
if(temp->x==x&&temp->y==y&&temp->z==z)
return value;
value++;
temp=temp->next;
}
return -1;
}
int main()
{
int n;
cin>>n;
node* head=nullptr;
for(int i=0;i<n;i++)
{
int x,y,z;
cin>>x>>y>>z;
head=insert(head,x,y,z);
}
int m;
cin>>m;
for(int i=0;i<m;i++)
{
int x,y,z;
cin>>x>>y>>z;
int vitriphathien1=vitriphathien(head,x,y,z);
if(vitriphathien1!=-1)
{
cout<<vitriphathien1<<endl;
}
else cout<<"KHONG"<<endl;
}
}
*/
//bang bam don gian
/*
#include <bits/stdc++.h>
using namespace std;
int hashh(int key,int m)
{
return key%m;
}
int rehash(int key,int m,int i)
{
return(hashh(key,m)+(i*i))%m;
}
int main()
{
int m,n;
cin>>m>>n;
int* hashtable=new int[m];
for(int i=0;i<m;i++)
{
hashtable[i]=0;
}
int* a=new int[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
int x=a[i];
int j=0;
while(j<m)
{
int pos=rehash(x,m,j);
if(hashtable[pos]==0||hashtable[pos]==-1)
{
hashtable[pos]=x;
break;
}
j++;
}
if(j==m)
{cout<<x<<" FULL"<<endl;}
}
for(int i=0;i<m;i++)
{
if(hashtable[i]==0)
{
cout<<i<<endl;
}
}
delete[] hashtable;
delete[] a;
}
*/
//tim kiem nhi phan
/*
#include <iostream>
#include <algorithm>
using namespace std;
struct Point {
double x, y, z;
};
bool operator==(const Point& p1, const Point& p2) {
return p1.x == p2.x && p1.y == p2.y && p1.z == p2.z;
}
bool operator<(const Point& p1, const Point& p2) {
if (p1.x != p2.x) return p1.x < p2.x;
if (p1.y != p2.y) return p1.y < p2.y;
return p1.z < p2.z;
}
int binarySearch(const Point A[], int n, const Point& key) {
int left = 0;
int right = n - 1;
int comparisons = 0;
while (left <= right) {
comparisons++;
int mid = left + (right - left) / 2;
if (A[mid] == key) {
return comparisons;
}
if (A[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int n;
cin >> n;
Point* A = new Point[n];
// Nhập danh sách A và lưu vào mảng
for (int i = 0; i < n; ++i) {
cin >> A[i].x >> A[i].y >> A[i].z;
}
//sort(A, A + n); // Sắp xếp mảng A theo thứ tự tăng dần
int m;
cin >> m;
Point* pi = new Point[m];
// Nhập các điểm pi cần kiểm tra
for (int i = 0; i < m; ++i) {
cin >> pi[i].x >> pi[i].y >> pi[i].z;
}
// Kiểm tra từng điểm pi trong mảng pi
for (int i = 0; i < m; ++i) {
int comparisons = binarySearch(A, n, pi[i]);
if (comparisons == -1) {
cout << "KHONG" << endl;
} else {
cout << comparisons << endl;
}
}
delete[] A;
delete[] pi;
return 0;
}
*/
//tim node xa node goc nhat
/*
#include<bits/stdc++.h>
using namespace std;
struct treenode
{
int data;
treenode* left;
treenode* right;
treenode(int data):data(data),left(nullptr),right(nullptr){};
};
void insert(treenode*& root,int x)
{
if(root==nullptr)
{
root=new treenode(x);
return;
}
if(root->data>x)
{
insert(root->left,x);
}
else
insert(root->right,x);
}
int maxdepth(treenode* root)
{
if(root==nullptr)
return -1;
return 1+max(maxdepth(root->left),maxdepth(root->right));
}
void thuthapnode(treenode* root,int currentdepth,int maxdepth,vector<treenode*>& deeppestnodes)
{
if(root==nullptr) return;
if(currentdepth==maxdepth)
deeppestnodes.push_back(root);
thuthapnode(root->left,currentdepth+1,maxdepth,deeppestnodes);
thuthapnode(root->right,currentdepth+1,maxdepth,deeppestnodes);
}
vector<treenode*>deep(treenode* root)
{
int maxdep=maxdepth(root);
vector<treenode*>deepestnodes;
thuthapnode(root,0,maxdep,deepestnodes);
return deepestnodes;
}
int main()
{
int n;
cin>>n;
treenode* root=nullptr;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
insert(root,x);
}
vector<treenode*>vietnam=deep(root);
for(treenode* x:vietnam)
{
cout<<x->data<<" ";
}
}
*/
//thao tac voi danh sach lien ket
/*
#include <bits/stdc++.h>
using namespace std;
struct node
{
int data;
node* next;
node(int data):data(data),next(nullptr){};
};
node* pushfront(node*& head,int data)
{
node* newnode=new node(data);
newnode->next=head;
head=newnode;
return head;
}
node* pushback(node*& head,int data)
{
node* newnode=new node(data);
if(head==nullptr)
{
pushfront(head,data);
return head;
}
node* temp=head;
while(temp->next!=nullptr)
{
temp=temp->next;
}
temp->next=newnode;
return head;
}
node* deletefirst(node* head)
{
if(head==nullptr)
return head;
head=head->next;
return head;
}
void deletelast(node*& head)
{
if(head==nullptr)
return ;
node* before=nullptr;
node* after=head;
while(after->next)
{
before=after;
after=after->next;
}
if(before==nullptr)
{
delete head;
head=nullptr;
}
else
{
before->next=nullptr;
delete after;
}
}
int sizee(node* head)
{
int dem=0;
node* p=head;
while(p)
{
dem++;
p=p->next;
}
return dem;
}
void deletemiddle(node*& head,int vitri)
{
int n=sizee(head);
if(vitri<0||vitri>n-1)
{
cout<<"No position"<<endl;
return;
}
if(vitri==0)
{
head=deletefirst(head);
return;
}
if(vitri==n-1)
{
deletelast(head);
return;
}
node* prev=nullptr;
node* current=head;
for(int i=0;i<vitri;i++)
{
prev=current;
current=current->next;
}
if(prev==nullptr)
{
head=current->next;
}
else
{
prev->next=current->next;
delete current;
}
}
node* pushmiddle(node*& head,int data,int vitri)
{
int n=sizee(head);
if(vitri<0||vitri>n-1)
{
cout<<"No position";
}
if(vitri==0)
{
pushfront(head,data);
return head;
}
if(vitri==n-1)
{
pushback(head,data);
}
node* temp=head;
for(int i=0;i<vitri;i++)
{
temp=temp->next;
}
node* newnode=new node(data);
newnode->next=temp->next;
temp->next=newnode;
return head;
}
void print(node* head)
{
node* temp=head;
while(temp)
{
cout<<temp->data<<" ";
temp=temp->next;
}
}
int main()
{
int n;
cin>>n;
node* head=nullptr;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
//head=pushfront(head,x);
head=pushback(head,x);
}
head=pushmiddle(head,7,2);
head=deletefirst(head);
deletelast(head);
deletemiddle(head,0);
print(head);
//cout<<sizee(head);
}
*/
//bai cay nhi phan
/*
#include <iostream>
using namespace std;
struct treenode
{
int data;
treenode* left;
treenode* right;
treenode(int data):data(data),left(nullptr),right(nullptr){};
};
void insert(treenode*& root,int key)
{
if(!root)
root=new treenode(key);
else if(key<root->data)
{
insert(root->left,key);
}
else insert(root->right,key);
}
int maxdepth(treenode* root) {
if (root == nullptr) return 0;
return 1 + max(maxdepth(root->left), maxdepth(root->right));
}
int countnodes(treenode* root) {
if (root == nullptr) return 0;
return 1 + countnodes(root->left) + countnodes(root->right);
}
void solve(treenode* root)
{
if(root==nullptr)
cout<<"Cay khong dat yeu cau";
else if(maxdepth(root->left)==2*maxdepth(root->right))
{
cout<<countnodes(root);
}
else cout<<"Cay khong dat yeu cau";
}
int main()
{
int n;
cin>>n;
treenode* root=nullptr;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
insert(root,x);
}
solve(root);
}
*/
/*
#include <iostream>
using namespace std;
struct treenode
{
int data;
treenode* left;
treenode* right;
treenode(int data):data(data),left(nullptr),right(nullptr){};
};
void insert(treenode*& root,int key)
{
if(!root)
root=new treenode(key);
else if(key<root->data)
{
insert(root->left,key);
}
else insert(root->right,key);
}
void lnr(treenode* root)
{
if(root==nullptr)
return;
lnr(root->left);
cout<<root->data<<" ";
lnr(root->right);
}
void nlr(treenode*root)
{
if(root==nullptr)
return;
cout<<root->data<<" ";
nlr(root->left);
nlr(root->right);
}
void lrn(treenode* root)
{
if(root==nullptr)
return;
lrn(root->left);
lrn(root->right);
cout<<root->data<<" ";
}
int main()
{
int n;
cin>>n;
treenode* root=nullptr;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
insert(root,x);
}
lnr(root);
cout<<endl;
lrn(root);
cout<<endl;
lnr(root);
}
*/
#include <bits/stdc++.h>
using namespace std;
struct student
{
string name;
int diem;
student(string name,int diem):name(name),diem(diem){};
};
struct node
{
student data;
node* next;
node(student data):data(data),next(nullptr){}
};
void insertstudent(node*& head,student s)
{
node* newnode=new node(s);
if(head==nullptr){
head=newnode;
return;
}
node* temp=head;
while(temp->next)
{
temp=temp->next;
}
temp->next=newnode;
}
void print9(node* head)
{
node* hehe=head;
while(hehe)
{
if(hehe->data.diem>9)
{
cout<<hehe->data.name<<endl;
}
hehe=hehe->next;
}
}
int main()
{
int n;
cin>>n;
node* head=nullptr;
for(int i=0;i<n;i++)
{
int x;
string y;
cin>>x>>y;
student s(y,x);
insertstudent(head,s);
}
print9(head);
}
Editor is loading...
Leave a Comment